Maven: Không thể đọc mô tả giả


258

Tôi hy vọng ai đó có thể giúp tôi với một vấn đề mà tôi đang đấu tranh.

Khi tôi cố gắng xây dựng dự án của mình từ thiết bị đầu cuối, tôi gặp lỗi này:

Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT

Các common.test-data-utilsjar được tạo ra bởi một dự án riêng biệt và chia sẻ giữa điều này và một dự án khác (dự án khác không xây dựng một trong hai, nhưng đó là xuống đến một vấn đề khác).

Tôi có thể xây dựng com.morrislgn.merchandising.common:test-data-utilsmà không gặp vấn đề gì, tôi có thể thấy mục mà nó tạo ra trong .m2kho lưu trữ cục bộ trên máy của tôi. Tôi cũng đã giới thiệu lại kho lưu trữ của mình trong Eclipse.

POM cho dự án của tôi có mục này:

<dependency>
    <groupId>com.morrislgn.merchandising.common</groupId>
    <artifactId>test-data-utils</artifactId>
    <version>0.3b-SNAPSHOT</version>
</dependency>

Điều này có vẻ đúng với tôi - POM không báo cáo bất kỳ lỗi nào khi được xem trong Eclipse.

Ai đó có thể cho tôi biết những gì tôi đang thiếu ở đây hoặc làm sai?

Câu trả lời:


183

Bạn luôn có thể thử mvn -U clean install

-U buộc kiểm tra các bản phát hành cập nhật và ảnh chụp nhanh trên kho từ xa.


40
@MrPhi: Nếu bạn có plugin m2e, thì bạn có thể sử dụng Maven -> "Cập nhật dự án ...". Hộp thoại tiếp theo sẽ có tùy chọn để buộc cập nhật ảnh chụp nhanh và bản phát hành.
Aaron Digulla

1
@AaronDigulla Đó là hộp thoại gây ra lỗi cho tôi.
Jeroen

1
Để thực hiện công việc này, bạn nên chạy lệnh bên trong thư mục gốc của dự án của bạn
Daria

Tôi đã có một vấn đề tương tự là tốt. Điều này thực sự hữu ích, và ngoài ra, nếu bạn đang sử dụng repo mvn riêng, hãy đảm bảo thêm phần đó vào ~/.m2/setting.xmlphần nhân bản của bạn trước, sau đó sau khi chạy mvn -U clean install, hãy đảm bảo Reimport(nhấp chuột phải vào dự án, sau đó bên dưới Mavenphần bên dưới có một Reimportnút ).
JACK ZHANG

1
@TomaszWaszchot: Có. 1. Giao diện Windows-show-> Terminal. 2. Thêm thiết bị đầu cuối cục bộ 3. cd PomFilePath 4. Chạy lệnh
Vishnu Dahatonde

142

Vấn đề này có thể xảy ra nếu bạn có một số dự án con tham chiếu đến pom cha và bạn chưa cài đặt từ thư mục cha mẹ (chạy mvn installtừ thư mục cha). Một trong những dự án con có thể phụ thuộc vào dự án anh chị em và khi nó đi đọc pom của anh chị em, nó sẽ thất bại với lỗi được đề cập trong câu hỏi trừ khi bạn đã cài đặt từ thư mục cha mẹ ít nhất một lần.

Tôi vừa gặp vấn đề này khi chuyển một dự án sang một máy tính mới. Tôi có thói quen chạy các lệnh từ dự án con và không chạy cài đặt trên cha mẹ.


13
Ngoài ra, khi chạy mvn installtrên cha mẹ, bạn cũng có thể thêm -Ncho hoạt động không đệ quy. Điều này sẽ khiến maven bỏ qua tất cả các mô-đun (bao gồm một mô-đun không thành công) và chỉ thực hiện installmục tiêu cho cha mẹ.
Jacek Prucia

@JacekPrucia thật tốt khi biết rằng một vật phẩm pom cũng cần phải được cài đặt (nếu cha mẹ của bạn là một pom)
Adrian

@bzuillsmith tại sao bạn cần chạy mvn installtrong pom cha. Điều này sẽ không được sử dụng để phụ thuộc anh chị em có thể được tải xuống? Nếu bạn tình cờ đã đi đến thư mục anh chị em & chạy mvn installtừ đó để jar nằm trong kho lưu trữ cục bộ của bạn, thì điều này có thực hiện được điều tương tự không?
user2158382

Đã vài năm kể từ khi tôi sử dụng maven, nhưng - Vâng, tôi tin rằng bạn có thể cài đặt từng phụ thuộc anh chị em. Cài đặt từ cha mẹ chỉ có xu hướng ít công việc hơn (ít lệnh hơn để gõ và chạy). Có thể có các trường hợp trong các dự án lớn mà bạn không muốn tất cả các dự án con được cài đặt trong trường hợp đó bạn sẽ cần chạy chúng riêng lẻ.
bzuillsmith

Dự án của tôi như ch-Multip-spring \ simple-Parent \ simple-model \ pom.xml, tôi cài đặt sạch mvn từ thư mục root ch-Multip-spring (không phải từ cha mẹ đơn giản), nó cũng giải quyết vấn đề tương tự của tôi đến tiêu đề bài viết.
IcyBrk

104

Có vấn đề tương tự với IntelliJ IDEA và sau đây đã hoạt động.

  • Đi đến File
  • Lựa chọn Settings
  • Lựa chọn Build, Execution, Deployments
  • Lựa chọn Build Tools từ thả xuống
  • Lựa chọn Maven từ thả xuống
  • Đánh dấu vào Always update snapshotshộp kiểm

ảnh chụp màn hình của IntelliJ 2017.2> Tùy chọn / Cài đặt> Xây dựng, Thực thi, Triển khai> Công cụ xây dựng> Maven> Luôn cập nhật ảnh chụp nhanh (hộp kiểm)


1
Điều này làm việc cho tôi, nhưng tôi không hiểu tại sao - tôi đã cố gắng xây dựng từ dòng lệnh. Có cái gì đó được lưu trữ từ IntelliJ?
goodOldF Fashioned

Làm việc cho tôi quá! Không thể tin được làm thế nào là bực bội này. Cảm ơn!
Đấu trường Ben

@ goodOldF Fashioned: "luôn cập nhật" này ghi đè lên tệp .... LastUpdated từ kho lưu trữ cục bộ. -U làm tương tự từ dòng lệnh. Vì vậy, intellij đã sửa lỗi repo cục bộ của bạn, và sau đó dòng lệnh hoạt động trở lại.
Frischling

Đơn giản và hiệu quả
Ojonugwa Jude Ochalifu

2
sau khi duyệt toàn bộ internet, cuối cùng điều này đã làm việc với tôi
khawarizmi

37

Nếu bạn đang sử dụng Eclipse, Nhấp chuột phải vào Dự án của bạn -> Maven -> Cập nhật dự án . Nó sẽ mở hộp thoại Update Maven Project.

Trong hộp thoại đó, kiểm tra Force Update của Snapshots / Phát hành hộp kiểm & bấm OK . (Vui lòng tham khảo hình ảnh bên dưới)

Cập nhật hộp thoại dự án Maven

Điều này làm việc cho tôi!


36

Nếu bạn đang sử dụng nhật thực, nhấp chuột phải vào dự án -> thuộc tính -> Maven và đảm bảo rằng " Giải quyết các phụ thuộc từ các dự án không gian làm việc " không được nhấp vào.

Hi vọng điêu nay co ich.


4
Nó làm việc cho tôi. Nhưng tôi không hiểu tại sao? Có lời giải thích nào đằng sau điều này?
Anand

1
điều này không hiệu quả với tôi, ban đầu đã mất 12 lần, sau khi thực hiện xong thì bây giờ là 74
user2044822

27

Tôi biết tôi đến cuộc trò chuyện khá muộn, nhưng tôi cũng gặp vấn đề này. Tôi nghĩ vấn đề là tường lửa của công ty tôi. Giải pháp của tôi là rút phích cắm ra khỏi mạng, kết nối với mạng không dây mở của chúng tôi và sau đó buộc cập nhật qua Eclipse. Điều này giải quyết mọi thứ.


6
Bạn cần phải đưa thông tin proxy vào
.m2

1
Cảm ơn các bạn! Nó làm việc cho tôi và tiết kiệm rất nhiều thời gian.
saidfagan

14

Tôi gặp vấn đề tương tự với nhật thực khi dòng lệnh maven build hoạt động tốt NHƯNG hãy thử điều này

  • đi vào .m2 / repository và xóa thư mục liên quan
  • chạy cập nhật phụ thuộc maven trong nhật thực

Lỗi không còn nữa .... tại sao dòng lệnh mvn của tôi hoạt động với các thư mục đó và nhật thực .m2eclipse không thể, tôi không biết và nó hơi tệ. Dự án của tôi hiện đang làm việc trong nhật thực một lần nữa.


trên một lưu ý phụ, chúng tôi đã chuyển sang gradle .... rất hạnh phúc hơn kiến ​​và maven .... thiết lập cực kỳ tốt đẹp.
Dean Hiller

Thậm chí không chắc chắn đó là bất cứ điều gì liên quan đến Eclipse. Tôi gặp vấn đề tương tự với IntelliJ và xóa các gói có vấn đề và chạy lại mvn clean installhoạt động
Jay

12

Tôi gặp vấn đề tương tự khi sử dụng IntelliJ. Tôi đã giải quyết bằng cách nhấp chuột phải vào pom.xml> Maven> Reimport


Vâng, giống như cuộc sống chỉ đơn giản như vậy. Dù sao, câu trả lời @prime làm việc cho tôi.
Imam Bux

10

Tôi đã giải quyết vấn đề này bằng cách xóa trong các thư mục kho lưu trữ, nơi lỗi này được hiển thị mọi thứ trừ các tệp .jar và .pom.


Tôi cũng đã giải quyết vấn đề tương tự bằng cách xóa các tệp liên quan trong kho lưu trữ cục bộ của maven và sau đó cập nhật toàn bộ dự án.
Quảng cáo Infinitum

8

Các vấn đề "Không thể đọc mô tả giả" thường chỉ ra một vấn đề với tệp pom của phụ thuộc trong kho lưu trữ maven. Tôi sẽ đề nghị bạn kiểm tra kỹ xem tên của tệp pom có ​​giống với tên mà maven mong đợi hay không và cũng để kiểm tra xem nội dung của tệp pom có ​​hợp lệ không.


1
Việc kiểm tra pom.xml rất hữu ích. Tôi thấy tôi có hai lần phụ thuộc tương tự (lỗi sao chép và dán). Sau khi dọn dẹp mọi thứ đều ổn.
Adam Boczek

8

Đối với tôi, nó có liên quan đến việc đặt "Cài đặt người dùng" bên trong

Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml . 

6

Tôi có một dự án

 A/
 |--a1
 |--a2

Bây giờ có một dự án khác trong org của chúng tôi

 B/
 |--b1
 |--b2
 |--b3

(Mỗi mô-đun a1, b1, v.v. và các dự án cha mẹ A, B đều có pom.xml riêng theo quy tắc maven tiêu chuẩn của cha mẹ và con cái)

Cả hai dự án đều được kiểm tra trên nhật thực địa phương của tôi (từ SVN). Tôi đang tích cực làm việc trên A.

Tôi đã biết rằng có một chức năng chung tốt (b4) được phát triển trong B và tôi cần sử dụng nó.

 B/
 |--b1
 |--b2
 |--b3
 |--b4 (NEW)

Nhà phát triển của b4 đã triển khai mô-đun b4 này như một vật phẩm trong kho lưu trữ của chúng tôi. Tôi đã bao gồm phần phụ thuộc vào POM của mô đun của tôi, tức là pom.xml của a2. Eclipse đã tải xuống tạo phẩm được yêu cầu từ repo và tôi có thể nhập các lớp trong đó.

Bây giờ vấn đề bắt đầu ... Tôi cần kiểm tra mã nguồn của b4 cho một số mục đích và vì tôi đã kiểm tra B trên nhật thực cục bộ của mình, tôi đã cập nhật nó từ SVN và kiểm tra mô-đun b4. Tôi cũng đã chạy pom.xml của mô-đun b4 với các mục tiêu như sạch, gói, v.v ... Sau một thời gian khi tôi hoàn thành mã hóa, tôi cần tạo JAR của mô-đun a2. Tôi đã chạy "gói" trên pom.xml và BAM của a2 !! lỗi n lỗi cho mô-đun a2 .. Những lỗi này cũng không thân thiện với người dùng lắm. Chỉ có điều là có tên của b4 cho chắc chắn trong nhật ký.

Giải pháp: Sau khi thử nhiều giải pháp trong nhiều giờ, tôi đã chạy "mvn -U sạch cài đặt" từ bảng điều khiển trong bản mẫu dự án B của tôi (ví dụ: trong ../codebase/B). Vì B là cha mẹ, lệnh cài đặt sạch đã chạy cho tất cả các mô-đun bao gồm b4 và nó đã chạy thành công. Sau này, tôi chạy "mvn -U sạch cài đặt" cho dự án mẹ tôi là A. Và điều này đã hoạt động! mô-đun a2 đã được biên dịch, cài đặt, (đóng gói sau) thành công.

Ở đây điểm quan trọng là nếu b4 trong không gian làm việc của bạn không chỉ cài đặt b4. Bạn sẽ cần phải cài đặt hoàn tất B. Tôi đã tìm ra giải pháp này sau khi đọc câu trả lời từ Zuill

EDIT: Một điều nữa ở đây cần lưu ý rằng nếu tôi không kiểm tra dự án B trong môi trường Địa phương thì vấn đề này có thể không xảy ra với tôi. Tôi có xu hướng nghĩ rằng điều này xảy ra vì tôi đã kiểm tra B trong không gian làm việc tại địa phương.


5

Bạn đề cập đến hai nhóm khác nhau, com.morrislgn.merchandising.commoncom.johnlewis.jec.webpim.common. Có lẽ đây là vấn đề.


Điểm tốt - không, nó không đáng tiếc. Tôi đã sao chép thẻ sai từ POM XML, đó là thẻ nằm trên thẻ tôi cần và không phát hiện ra những gì tôi đã làm. Ôi trời! Tôi đã chỉnh sửa câu hỏi để khắc phục sự ngu ngốc của mình!
Morrislgn


4

Không có bất kỳ may mắn cập nhật thông qua nhật thực. Phải sử dụng mvn sạch cài đặt -U (giải quyết mọi thứ).


10
Gal Bracha cũng trả lời như vậy. Tốt hơn để bỏ phiếu trả lời làm việc và thêm ý kiến ​​nếu cần.
Brian White

4

Đối với tôi, nó dường như thực sự là một vấn đề với POM phụ thuộc.

Tôi đã làm việc xung quanh nó bằng cách sử dụng kho lưu trữ ảo jitpack, trong đó bạn có thể bao gồm các kho github dựa trên URL của họ thay vì POM của riêng họ (có vẻ như đã bị lỗi trong trường hợp của tôi).

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>

3

Tôi đã có cùng một vấn đề trong một thời gian và mặc dù làm mvn -U clean install vấn đề không được giải quyết!

Cuối cùng tôi đã giải quyết vấn đề bằng cách xóa toàn bộ .m2 thư mục và sau đó khởi động lại IDE của tôi và vấn đề đã biến mất!

Vì vậy, đôi khi vấn đề sẽ tăng lên do một số sự không tương thích hoặc vấn đề trong kho lưu trữ maven cục bộ của bạn.


Đã thử thực hiện đồng bộ hóa Maven khi ngoại tuyến và hoàn toàn thay đổi IntelliJ. Làm theo lời khuyên của bạn, đã xóa .m2, và bây giờ nó hoạt động như một cơ duyên! Cảm ơn!
Victor Grazi

3

Trong trường hợp của chúng tôi, lỗi xuất hiện do đổi tên nhóm không chính xác trong khi một số dự án trong cấu hình Maven đa mô-đun tham chiếu đến các tham số khác.

Chúng tôi đã có một dự án tổng hợp ( billing-parent) với hai mô-đun ( billing-api, billing):

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

Dự án billingphụ thuộc vào billing-api. Vì vậy, trong pom.xmlnó có:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Chúng tôi quyết định đổi tên groupId từ com.company.teamthành com.company.team.billing. Chúng tôi đã thay thế giá trị cũ pom.xmltrong <parent>phần của cha mẹ và trong các phần của cả hai mô-đun. Nhưng quên cập nhật phụ thuộc ở trên. Vì vậy, chúng tôi đã có cấu hình trong đó billingdự án tham chiếu cổ billing-apivật cũ . Cuối cùng, nó sẽ xây dựng billingmô-đun sau một thời gian với lỗi như

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failure to find <parent of the com.company.team:billing-parent project which is not available any more>

mặc dù thực tế là billing-api mô-đun xây dựng không có lỗi.

Giải pháp 1: đổi tên groupIdtrongdependency là tốt.

Giải pháp 2: thay thế groupIdbằng ${project.groupId}tài sản như thế này:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Phần kết luận. Vì vậy, lời khuyên của tôi trong trường hợp bạn gặp phải lỗi trong cấu hình đa mô-đun là: kiểm tra kỹ lưỡng groupIdartifactIdcác phụ thuộc vào các mô-đun lân cận.


2

Điều hướng qua shell bên trong thư mục dự án của bạn và chạy lệnh sau:

mvn -U clean install

Thông thường điều này đã giải quyết vấn đề của bạn.

Nếu bạn thấy một thông báo như thế này:

Không thể giải quyết các phụ thuộc cho dự án: war: 0.0.1-SNAPSHOT: Không thể thu thập các phụ thuộc tại com.sun.jersey: jersey-server: jar: 1.9

Sau đó thực hiện:

export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

theo dõi bởi:

mvn -U clean install

một lần nữa để cập nhật phụ thuộc của bạn.

Sau đó thực hiện xây dựng maven sạch:

maven clean install

1

Tôi đã có một vấn đề tương tự. Trong trường hợp của tôi, phiên bản testng trong thư mục .m2 / kho lưu trữ của tôi đã bị hỏng, nhưng khi tôi xóa nó và thực hiện cập nhật lại một lần nữa, mọi thứ đều hoạt động tốt.


0

Tôi gặp vấn đề này trong nhật thực, mvn -U clean installkhông hoạt động nhưng nhấp chuột phải vào dự án và chọn Maven-> Update Project đã sửa nó.


0

Tôi mới bắt đầu sử dụng STS Eclipse với lần đầu tiên sử dụng Maven. Dự án tôi thiết lập đã có cài đặt riêng. Nếu đây là trường hợp, bạn sẽ muốn cập nhật tệp cài đặt của bạn trong cấu hình chạy.

  1. nhấp chuột phải vào tệp pom.xml và "Chạy dưới dạng" -> "Chạy Cấu hình ..."

  2. trong đó thông báo "Cài đặt người dùng" nhấp vào nút Tệp và thêm tệp cài đặt.

  3. Tôi nghĩ rằng điều này là cụ thể cho dự án của bạn nhưng "Mục tiêu" của tôi được đặt thành "cài đặt sạch" và tôi đã kiểm tra trên "Skip Tests".


0

Lỗi này về cơ bản là nói rằng maven không thể đọc một phụ thuộc nhất định từ kho lưu trữ cục bộ. Nó có thể xảy ra vì một tệp jar không được tải xuống chính xác. Vì vậy, hãy truy cập kho lưu trữ cục bộ maven của bạn và đảm bảo không có tệp mở rộng .lastUpdated .


0

Điều này đã giúp tôi:

Từ IDE (Red Hat CodeReady Studio trong trường hợp của tôi).

Windows -> Hiển thị Chế độ xem -> Thiết bị đầu cuối -> Mở / Thêm thiết bị đầu cuối cục bộ

Chạy các lệnh như sau>

$ cd /pom-file-path/

$ mvn -U clean install


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.