2011-06-21 133 views
18

Khi tôi mở tệp POM và nhấp vào tab "Phân cấp phụ thuộc" ở dưới cùng, nó cho tôi lỗi "Lỗi đọc dự án". Nó hoạt động với các dự án khác trong cùng một không gian làm việc, không phải với dự án này. Bất kỳ ý tưởng?Lỗi khi mở phân cấp phụ thuộc tệp Maven POM trong Eclipse - "Lỗi đọc dự án"

enter image description here

EDIT

Để đối phó với @ câu trả lời Yhn của.

  1. Chạy các giai đoạn biên dịch và gói bên ngoài Eclipse từ công việc dòng lệnh như mong đợi. Nó biên dịch ứng dụng và xây dựng tệp WAR cuối cùng.
  2. Eclipse thực sự trỏ đến vị trí mặc định của tệp settings.xml Maven, vì vậy cần lưu ý các kho lưu trữ tùy chỉnh được định nghĩa trong đó (công ty của tôi có kho lưu trữ Maven riêng).
  3. Tôi có thể mở và chỉnh sửa tệp POM từ Eclipse, vì vậy nó phải có quyền đọc/ghi đối với tệp.
  4. Dự án không được cấu hình trong Eclipse như một dự án Maven, vì vậy tôi không thể chạy giai đoạn gói từ Eclipse (tôi chỉ có thể chạy nó từ dòng lệnh).

Tôi tự hỏi liệu nó có liên quan gì đến việc xây dựng dự án với Maven 3 không? dựa trên một số thông báo lỗi). Tôi có thể xây dựng dự án với Maven 2, nhưng tôi vẫn nhận được tin nhắn như sau:

Downloading: http://dist.codehaus.org/mule/dependencies/maven2/org/codehaus/xfie/bcprov-jdk14/133/bcprov-jdk14-133.pom 
[INFO] Unable to find resource 'org.codehaus.xfire:bcprov-jdk14:pom:133' in repsitory mule (http://dist.codehaus.org/mule/dependencies/maven2) 

Nó phải có khả năng tìm thấy những dependences Tuy nhiên, bởi vì nó tải về các lọ tốt và có thể xây dựng các ứng dụng. Có vẻ như vấn đề là các phụ thuộc không có các tệp POM được liên kết với chúng, đó có thể là lý do tại sao chúng không thể được sử dụng với Maven 3. Đây cũng có thể là lý do tại sao tôi không thể xem Phân cấp phụ thuộc trong Eclipse.

EDIT 2

tôi chuyển đổi các dự án cho một dự án Maven bằng cách vào "Configure> Convert to Dự án Maven". Khi tôi mở file POM, tôi thấy lỗi:

ArtifactDescriptorException: Failed to read artifact descriptor for woodstox:wst (Click for 140 more)

(woodstox: WST là một sự phụ thuộc bắc cầu của dự án). Một lỗi xuất hiện trong chế độ xem "Đánh dấu" cho dường như mọi phụ thuộc và phụ thuộc transitive trong dự án của tôi. Tuy nhiên, tôi có thể xây dựng thành công dự án bằng cách thực hiện "Run As> Maven build". (Chỉnh sửa: Điều này có thể là do dự án này không có mã nguồn Java, nhưng các JAR của các phụ thuộc chính xác xuất hiện trong WAR cuối cùng.) Phân cấp phụ thuộc vẫn cho cùng một lỗi - "Lỗi đọc dự án".

Giới thiệu về thông báo "Không thể tìm thấy tài nguyên" - nhưng điều này chỉ xuất hiện cho một số phụ thuộc transitive. Dự án có nhiều phụ thuộc transitive hơn, nhưng những thông điệp này không xuất hiện cho chúng. Nó có vẻ như, bởi vì các phụ thuộc không có các tệp POM, mà Maven cố gắng tìm kiếm chúng mỗi khi dự án được xây dựng. Đây có phải là bình thường không có POM ??

Tôi làm cách nào để có được người quản lý repo?Đây có phải là thứ gì đó sẽ phải được cài đặt trên kho lưu trữ Maven của công ty hay bạn có thể cài đặt nó trên máy trạm của riêng bạn không?

+0

Nếu tôi nhớ chính xác; eclipse có một giao diện điều khiển maven hiển thị lỗi khi những thứ như thế này xảy ra.Bạn có thể kiểm tra xem bảng điều khiển đó có hiển thị bất kỳ thứ gì có thể giúp xác định nguyên nhân của điều này không? – Yhn

+0

Dự án này có thể được biên soạn một cách chính xác, v.v. qua Bàn điều khiển không? – khmarbaise

+0

@Yhn Bạn có biết cách tôi có thể mở bảng điều khiển đó không? – Michael

Trả lời

8

Tôi đã gặp vấn đề này với một số lọ không phải maven mà tôi cần đưa vào dự án maven của mình. Tôi đặt các lọ trong kho địa phương của tôi sử dụng lệnh maven này:

mvn install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2 

Sau đó, tôi gọi họ là phụ thuộc vào pom.xml của tôi:

<dependency> 
     <groupId>gov.nist</groupId> 
     <artifactId>xccdf</artifactId> 
     <version>1.2</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

này làm việc tốt cho một thời gian, nhưng tôi phải đã nâng cấp một cái gì đó trong nhật thực, và tôi bắt đầu nhận được lỗi mà bạn mô tả.

Việc sửa chữa là để đưa họ ra khỏi kho lưu trữ địa phương, và làm lại các tập tin cài đặt-hỏi maven để tạo ra một pom cho bạn:

mvn -DgeneratePom=true install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2 

Lệnh sẽ gây ra một pom được tạo ra trong cùng một thư mục (trong repo địa phương của bạn) nơi bình được đặt.

Trong các phiên bản gần đây của hỗ trợ maven nhật thực, xây dựng maven vẫn được thực hiện với maven 2 (nếu bạn bấm chuột phải vào tệp pom.xml của bạn, hãy chọn chạy như gói mvn chẳng hạn). Phân tích phụ thuộc bây giờ được thực hiện với một plugin 3 maven nhúng, mà không giống như một phụ thuộc không có pom.xml.

+0

Cảm ơn Glenn, đã làm việc. – Michael

+1

Bạn có mẹo hay không để biết được sự phụ thuộc nào gây ra vấn đề này? –

2

Với thông tin thông qua các ý kiến:

mvn biên dịch/mvn gói công việc thông qua giao diện điều khiển (tôi giả sử bên ngoài của nhật thực toàn phần). Dựa trên đó, tệp POM phải đúng và phụ thuộc có thể được giải quyết.

Tuy nhiên; có thể là cài đặt nhật thực không chính xác. Ví dụ, nếu nhật thực có một số thuộc tính maven riêng (thay vì tệp ~/.m2/settings.xml mặc định); Tôi có thể tưởng tượng nó thất bại trong việc giải quyết các phụ thuộc được cấu hình trong tệp settings.xml được sử dụng bởi chính maven. Các thiết lập cho điều này sẽ có trong Eclipse Preferences @ Maven> User Settings.

Cũng đảm bảo rằng Eclipse thực sự có thể đọc tệp (không bị khóa, quyền chính xác, v.v.).

Điều này có vẻ đúng hay không; bạn có thể thử chạy trình biên dịch mục tiêu mvn từ nhật thực? Bạn có thể thực hiện việc này bằng cách nhấp chuột phải vào dự án và chọn run as > maven package. Bằng cách đó, nó sẽ chạy maven với các cài đặt tương tự như nhật thực đang sử dụng và có thể hiển thị bất kỳ lỗi bổ sung nào trong cấu hình của nó.

- Để đối phó với biết thêm chi tiết:

Về cơ bản nó sẽ cho bạn biết - khi sử dụng Maven 2 - rằng nó không thể tìm thấy một nguồn lực phụ thuộc (trong trường hợp này bcprov-jdk14) trong kho nhất định (codehaus /con la). Khi tôi tìm kiếm mô-đun maven đó (bcprov-jdk14), tôi tìm thấy nó trong repo trung tâm Maven (thông qua nexus địa phương của chúng tôi) @repo1.maven.org/maven2. Có thể điều đó gây ra lỗi mà bạn đang gặp phải với Maven2?

Và như tài liệu Maven 3 nói; cho Maven 1.x repo; bạn nên ủy quyền cho họ thông qua một người quản lý repo có thể phục vụ nó cho bạn như một kho lưu trữ maven 2 (Tôi tin rằng chúng tôi làm điều đó ở đây quá đối với một số repo thông qua Sonatype Nexus OSS)

ps .: Cho phép quản lý phụ thuộc maven trong nhật thực đủ để có thể sử dụng các mục tiêu chạy maven; nếu bạn muốn thử nghiệm nó.

-

Sound như nó có thể có nhiều vấn đề ... cho rằng maven bình thường xây dựng hoạt động tốt, người ta sẽ nghĩ rằng maven ít nhất có thể nhận được các hiện vật nó phụ thuộc vào và phụ thuộc của họ ... Tuy nhiên, , nhật thực dường như không thể.

Kiểm tra kỹ xem cài đặt kết nối internet Eclipse của bạn có chính xác không? Vì bạn đang nói về một repo của công ty, tôi giả định rằng có lẽ cũng sẽ là một proxy (tôi đã phải thiết lập Eclipse của tôi để sử dụng nó quá, mặc dù cho các plugin (xem điểm tiếp theo)). Một khả năng khác, từ kinh nghiệm, có thể là một khối proxy dựa trên quy tắc về các yêu cầu url * .pom (proxy của chúng tôi ở đây ngăn chặn việc sử dụng trình quản lý repo cục bộ, mức độ gây phiền nhiễu và phiền toái đó là :(). có thể muốn thử và mở tệp .pom mà nó cố gắng tải xuống theo cách thủ công trong trình duyệt của bạn để xem liệu đây có phải là trường hợp không (ví dụ: tôi không thể ...)

Để cài đặt lại, bạn có lẽ sẽ phải yêu cầu người chịu trách nhiệm về kho lưu trữ để thêm nó làm proxy maven2

Ít nhất, có vẻ như Eclipse đang gặp phải vấn đề nhận poms phụ thuộc (cần thiết để xây dựng cây phụ thuộc) từ Bạn luôn có thể thử để hỏi một số phi hành đoàn ICT (nếu họ đủ khả năng ...) về nó tại công ty của bạn, có thể họ có một số gợi ý hữu ích.

+0

@Yhn Cảm ơn sự giúp đỡ của bạn. Vui lòng xem các chỉnh sửa cho câu hỏi của tôi. – Michael

+0

@Michael: xem các chỉnh sửa trong câu trả lời của tôi, tôi hy vọng họ có thể giúp bạn nhiều hơn nữa. – Yhn

+0

@Yhn Cảm ơn bạn, hãy xem lại câu hỏi đã chỉnh sửa của tôi. – Michael

5

Tôi gặp vấn đề tương tự. Nếu bạn đã thực hiện dự án của mình một dự án maven, bạn nên chạy:

  • Chuột phải Bấm vào dự án | Maven | Cập nhật phụ thuộc hoặc
  • Chuột phải Nhấp vào dự án | Maven | Cập nhật Cấu hình Dự án

Điều đó phù hợp với tôi.

1

Tôi đã gặp vấn đề tương tự khi tôi thêm một phụ thuộc mới vào tệp pom.xml mà không cần kết nối mạng. Sau này, tôi có rất nhiều vấn đề như "Thiếu đồ tạo tác", "Thiếu bộ mô tả" hoặc "Lỗi đọc dự án". Tôi đã giải quyết điều này

  1. xóa phụ thuộc xấu vừa được thêm vào từ kho lưu trữ cục bộ.
  2. xây dựng lại chỉ mục địa phương.
  3. thêm lại phụ thuộc
+0

Sau 1. và maven - 'dự án cập nhật' tất cả đều tốt – user2657714

1
<properties> 
    <!-- ********************** --> 

    <!-- Plugin's properties --> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.7</java.version> 
</properties> 

thiết lập pom này làm việc cho tôi

0

Thông thường điều này xảy ra nếu có một lỗi đánh máy trong pom rằng Maven không thể hiểu và sau đó nó ném Project read error. Giống như trong trường hợp của tôi, tôi đã sao chép đoạn mã phụ thuộc maven và tôi bằng cách chuyển phiên bản. Thay vì gõ phiên bản thực tế # nó đã nhận được nó động ${asciidoctorj.version} và pom của tôi đã không có điều này trong phần tài sản. Vì vậy, tôi nhận được lỗi này. Khi tôi đã xóa và đặt số phiên bản, nó bắt đầu hoạt động.

0

Tôi đã thực hiện việc này sau khi sao chép thư mục lưu trữ cục bộ từ một máy khác. Việc sửa chữa là đi vào thư mục lưu trữ mà tôi đã sao chép và xóa _remote.repositories cùng với các tệp 'LastUpdated' rồi làm mới các phụ thuộc Maven trong Eclipse (Alt + F5)

Các vấn đề liên quan