2010-11-04 16 views
20

Kho lưu trữ nội bộ của chúng tôi (Artifactory) hiện chứa cả phiên bản ổn định cũng như các phiên bản SNAPSHOT của các thư viện nội bộ của chúng tôi.Maven không nhận được SNAPSHOT bản dựng từ kho lưu trữ

Đối với các bản dựng ổn định, chưa bao giờ có vấn đề tải xuống bất kỳ thứ gì từ kho lưu trữ.

Tuy nhiên, khi tôi thêm một -SNAPSHOT, Maven tuyên bố là không thể tìm thấy sự phụ thuộc, mặc dù nó là chắc chắn nhất trong kho.

Nếu tôi xây dựng và triển khai phụ thuộc cục bộ (tức là vào repo địa phương của tôi) tất cả hoạt động bình thường.

Về cơ bản, công trình này:

<dependency> 
    <groupId>com.example</groupId> 
    <artifactId>ourlibrary</artifactId> 
    <version>1.0.0</version> 
</dependency> 

và điều này không:

<dependency> 
    <groupId>com.example</groupId> 
    <artifactId>ourlibrary</artifactId> 
    <version>1.0.1-SNAPSHOT</version> 
</dependency> 

Mặc dù cả hai phiên bản được xây dựng theo cùng một cách và triển khai (như xa như tôi có thể có thể nói) một cách chính xác vào kho lưu trữ.

Lỗi:

Missing: 
---------- 

1) com.example:ourlibrary:jar:1.0.1-SNAPSHOT, 

    Try downloading the file manually from the project website. 

    Then, install it using the command: 
     mvn install:install-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file 

    Alternatively, if you host your own repository you can deploy the file there: 
     mvn deploy:deploy-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id] 

    Path to dependency: 
     1) com.example:product:war:2.0.0-SNAPSHOT 
     2) com.example:ourlibrary:jar:1.0.1-SNAPSHOT, 

Trong khi điều này nghe có vẻ giống với this câu hỏi, độ phân giải đến nay có không áp dụng cho trường hợp của tôi.

Mọi thông tin chi tiết về vấn đề này sẽ được đánh giá rất nhiều.

Sửa

Chạy với -X (như John V. gợi ý) tiết lộ như sau:

[DEBUG] Skipping disabled repository central 
[DEBUG] ourlibrary: using locally installed snapshot 
[DEBUG] Skipping disabled repository central 
[DEBUG] Using mirror: http://repo.example.com/repo (id: repo.example.com) 
[DEBUG] Artifact not found - using stub model: Unable to download the artifact from any repository 

    com.example:ourlibrary:pom:1.0.1-SNAPSHOT 

from the specified remote repositories: 
    repo.example.com (http://repo.example.com/repo) 


[DEBUG] Using defaults for missing POM com.example:ourlibrary:pom:1.0.1-SNAPSHOT:compile 
[DEBUG] com.example:ourlibrary:jar:1.0.1-SNAPSHOT:compile (selected for compile) 

Trả lời

12

Hai suy nghĩ tôi suy nghĩ:

  1. Cấu trúc đường dẫn trong kho nội bộ nội bộ của bạn cho tạo phẩm của bạn là không chính xác. Tôi đề nghị chạy lệnh maven với tham số -X. Nó sẽ hiển thị nỗ lực của maven tại số tải xuống tệp. Nhận dòng có kho lưu trữ của bạn dưới dạng url và thử và tự tìm kiếm.

    Con đường nên trông giống như

    /com/example/ourlibrary/1.0.1/ourlibrary-1.0.1-SNAPSHOT.jar

  2. Bạn didnt bao gồm kho của bạn như một kho lưu trữ trong pom của bạn. xml
+2

Tôi không khai báo repo trong POM, nhưng được chỉ định trong cài đặt maven rằng repo của chúng tôi là phổ dụng (*) gương.Không nên là đủ (nó chắc chắn là đủ cho việc xây dựng ổn định)? Thêm một khai báo rõ ràng cho POM dường như giải quyết vấn đề. – Kris

+0

Rất tiếc, tôi đã không thực hiện quá nhiều công việc với tệp settings.xml cho các kho lưu trữ. Tôi đã bao gồm chúng trong một pom cha mẹ, vì vậy bất kỳ nhà phát triển bắt đầu nhu cầu mới không phải lo lắng về settings.xml trong trường hợp kho lưu trữ phải thay đổi (mà nó thực sự có cho chúng tôi) –

+14

Tôi nghĩ rằng tôi đã lý luận điều này. Đối với các bản dựng ổn định, Maven sẽ mặc định là 'trung tâm' mà cài đặt gương của tôi chuyển hướng đến kho lưu trữ của chúng tôi. Đối với các bản dựng SNAPSHOT không có mặc định (vì trung tâm không xử lý chúng) và trong trường hợp không có POM chỉ định một repo (mà * không * xử lý các bản dựng SNAPSHOT), nó sẽ đơn giản thất bại mà không cần tìm kiếm nó. – Kris

11

Thông thường bạn có một url ảnh chụp riêng biệt từ url bản phát hành. Chỉ các đường dẫn khác nhau trong cùng một kho lưu trữ, nhưng được liệt kê là các kho lưu trữ riêng biệt trong pom. Một cho ảnh chụp nhanh cần phải có ảnh chụp nhanh được bật và bản chụp cho các bản phát hành đã bị tắt các ảnh chụp nhanh:

<repositories> 
     <repository> 
      <id>central</id> 
      <url> 
       http://<releases-url> 
      </url> 
      **<snapshots> 
       <enabled>false</enabled> 
      </snapshots>** 
     </repository> 

     <repository> 
      <id>snapshots</id> 
      <url> 
       http://<snapshots-url> 
      </url> 
      <snapshots> 
       **<enabled>true</enabled>** 
       <!-- never, daily, interval:X (where X is in minutes) or always --> 
       <!--<updatePolicy>daily</updatePolicy> --> 
      </snapshots> 
      <releases> 
       <enabled>false</enabled> 
      </releases> 
     </repository> 
    </repositories> 
+0

Tác phẩm này mặc dù bạn nên lưu ý rằng điều này nằm trong phần hồ sơ của tệp settings.xml Maven. – Kris

+0

Chúng tôi giữ nó trong tệp pom chính/cha mẹ của chúng tôi mà tất cả các dự án của chúng tôi kế thừa từ đó. Bằng cách này, các nhà phát triển không phải cấu hình điều này trong các tệp settings.xml của họ. Cài đặt.xml chủ yếu dành cho nội dung là máy hoặc người dùng cụ thể và tất cả các nhà phát triển cho một dự án thường nên sử dụng cùng một kho lưu trữ. Trong khi bạn có thể đặt kho lưu trữ trong tệp settings.xml, tôi nghĩ rằng đó sẽ là trường hợp ngoại lệ và không phải là tiêu chuẩn. – kevinmrohr

+0

Rất lạ, tôi có thể triển khai ảnh chụp nhanh mà không cần điều này, nhưng không thể tải xuống các ảnh chụp nhanh được triển khai. Thiết lập hồ sơ hoạt động tốt. – Betlista

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