2011-10-10 42 views
14

Vì vậy, tôi có một dự án phụ thuộc vào phiên bản chụp nhanh của một dự án khác. Sự phụ thuộc là:Có cách nào để tự động tải xuống các phiên bản tải xuống của Maven không?

<dependency> 
    <groupId>org.oop</groupId> 
    <artifactId>oop</artifactId> 
    <version>0.9.9-SNAPSHOT</version> 
</dependency> 

Đối với dự án oop, tôi đã thực hiện 'triển khai sạch mvn', vì vậy phiên bản ảnh chụp sẽ ở đâu đó trong kho lưu trữ trung tâm. Nhưng khi tôi làm một mvn cài đặt sạch, phụ thuộc ảnh chụp trên không thể được giải quyết và tôi có được điều này:

Thiếu:

1) org.oop: oop: jar: 0.9.9-SNAPSHOT

Hãy thử tải về các tập tin bằng tay từ các trang web của dự án.

Sau đó, cài đặt bằng lệnh: mvn cài đặt: install-file -DgroupId = org.oop -DartifactId = oop -Dversion = 0.9.9-SNAPSHOT -Dpackaging = jar -Dfile =/path/to/file

Hoặc, nếu bạn lưu trữ kho lưu trữ của riêng mình, bạn có thể triển khai tệp tại đó: triển khai mvn: deploy-file -DgroupId = org.oop -DartifactId = oop -Dversion = 0.9.9-SNAPSHOT -Dpackaging = jar -Dfile =/path/to/file -Durl = [url] -DrepositoryId = [id]

Có cách nào để tự động tải xuống ảnh chụp nhanh không? Tôi phải thiếu điều gì đó ở đây.

EDIT1: On settings.xml của tôi, tôi có:

<server> 
     <id>sonatype-nexus-snapshots</id> 
     <username>XXXXXX</username> 
     <password>XXXXXX</password> 
    </server> 

    <server> 
     <id>sonatype-nexus-staging</id> 
     <username>XXXXXX</username> 
     <password>XXXXXX</password> 
    </server> 

EDIT2: enter image description here

Trả lời

13

Chỉ cần thêm mục này vào ~/.m2/settings.xml:

<profiles> 
    <profile> 
    <id>allow-snapshots</id> 
     <activation><activeByDefault>true</activeByDefault></activation> 
    <repositories> 
     <repository> 
     <id>snapshots-repo</id> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     <releases><enabled>false</enabled></releases> 
     <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
    </repositories> 
    </profile> 
</profiles> 
+2

có thể bằng cách nào đó được thêm vào POM trong đó phụ thuộc được khai báo thay vì trong tệp settings.xml không? – Sergio

14

Để cập nhật ảnh chụp nhanh, hãy thử với các tùy chọn -U

-U,--update-snapshots     Forces a check for updated 
             releases and snapshots on remote 
             repositories 

Tuy nhiên, bạn đã nói:

Tôi đã thực hiện 'triển khai sạch mvn', vì vậy phiên bản ảnh chụp sẽ ở đâu đó trong kho lưu trữ trung tâm của maven.

Điều này là không thể, ảnh chụp của bạn sẽ diễn ra ở một nơi khác. Nếu tôi làm một mvn clean deploy mà không cần cấu hình kho cá nhân của tôi, tôi nhận được:

Triển khai thất bại: yếu tố kho không được quy định trong POM bên trong phần tử distributionManagement hoặc trong tham số = id :: bố trí :: url -DaltDeploymentRepository

để kích hoạt triển khai, có một số cấu hình để được thêm vào pom.xml, như ví dụ:

<distributionManagement> 

    <!-- Publish versioned releases here --> 
    <repository> 
     <id>myrepo</id> 
     <name>My releases</name> 
     <url>http://nexus.mycompany.com/nexus/content/repositories/releases</url> 
    </repository> 

    <!-- Publish snapshots here --> 
    <snapshotRepository> 
     <id>myrepo</id> 
     <name>my snapshots</name> 
     <url>http://nexus.mycompany.com/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 

</distributionManagement> 

<repositories> 
    <repository> 
     <id>myrepo</id> 
     <name>My Public Repository</name> 
     <url>http://nexus.mycompany.com/nexus/content/groups/public</url> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
+0

Cảm ơn sự trợ giúp, hãy xem những gì tôi có trong tệp settings.xml của tôi trong lần chỉnh sửa cuối cùng cho câu hỏi của tôi. Ngoài ra, thư viện tôi đang cố gắng đề cập đến là. GroupID: me.soliveirajr Vật phẩm: menta-container. Phiên bản: 0.9.9-SNAPSHOT. Bạn có thể tìm thấy nó ở bất cứ đâu trong kho lưu trữ maven không? Tôi có thể thấy nó ở đây ... – chrisapotek

+0

Xem EDIT2 để biết nơi tôi có thể xem ảnh chụp nhanh. – chrisapotek

+0

ok và khi nào bạn triển khai mvn nó được xuất bản tốt? không có lỗi để xem? trong trường hợp thử với mvn -e deploy và thậm chí mvn -X triển khai nếu cần thiết – stivlo

0

Bạn có thể

012.
  • sử dụng dự án mẹ để xây dựng tất cả ảnh chụp nhanh của bạn hoặc
  • triển khai ảnh chụp nhanh của bạn tới máy chủ tạo maven của bạn (nexus/archiva/..) bằng cách sử dụng ví dụ:, mvn: deploy
1

Phụ thuộc đó có tồn tại trong kho lưu trữ của bạn không? (trong tệp pom.xml hoặc settings.xml)?

Có vẻ như không. Nhân tiện, hãy xem cấu hình của bạn, chỉ cần bạn không sử dụng -o (ngoại tuyến). Ngoài ra, bạn có thể sử dụng -U để làm mới ảnh chụp nhanh.

19

Maven sẽ cố tải xuống ảnh chụp tự động và thực sự nó (như lỗi của bạn cho biết). Theo mặc định, Maven sẽ tìm kiếm các phiên bản ảnh chụp mới hơn một lần một ngày, nhưng bạn có thể thay đổi khoảng thời gian mà trong ảnh chụp kho cấu hình của bạn (ví dụ như trong settings.xml):

<updatePolicy>interval:5</updatePolicy> 

Điều này sẽ làm kiểm tra maven mỗi 5 phút (nếu bạn xây dựng thường xuyên). Ngoài ra, bạn có thể sử dụng tùy chọn -U hoặc --update-snapshots, để buộc kiểm tra theo cách thủ công.

Tuy nhiên, nó không thể tìm thấy sự phụ thuộc. Bạn có thể đăng các thiết lập repo và cấu hình tạo tác cho phụ thuộc snapshot không?

Sản phẩm org.oop:oop:jar:0.9.9-SNAPSHOT có trong kho lưu trữ của bạn không?

... vì vậy phiên bản ảnh chụp phải ở đâu đó trong kho lưu trữ trung tâm của maven.

Không. Tôi cố gắng tìm nó, nhưng không thể tìm thấy nó. Afaik, có một số cơ chế dàn dựng, vì vậy có thể cài đặt của bạn là sai. Nhưng thông thường, như những người khác đã nói, bạn sẽ đi và sử dụng trình quản lý kho lưu trữ của riêng bạn như Artifactory hoặc Nexus.

+0

Đây là thư viện tôi đang cố gắng để tải xuống: GroupID: me.soliveirajr Artifact: menta -container Phiên bản: 0.9.9-SNAPSHOT. Tôi có thể tìm thấy nó trong kho. – chrisapotek

+0

Vui lòng xem EDIT2 để biết nơi tôi có thể xem ảnh chụp nhanh. – chrisapotek

+0

@chrisapotek không phải là 'org.oop: oop: jar: 0.9.9-SNAPSHOT' nhưng' me.soliveirajr: menta-container: jar: 0.9.9-SNAPSHOT' sau đó - sự phụ thuộc của bạn là sai trong trường hợp đó. – Thomas

0

Hãy làm rõ thuật ngữ một chút để đảm bảo không có sự hiểu lầm.

"Maven Central" (http://search.maven.org/) là trang web toàn cầu nơi bạn chỉ tìm thấy bản phát hành. Trung tâm không chấp nhận ảnh chụp nhanh để triển khai ở đó sẽ cho bạn lỗi.

Bạn có thể có nghĩa là proxy/bộ nhớ cache rộng của công ty/địa phương của bạn. Đây cũng có thể được cấu hình để từ chối các phiên bản chụp nhanh. Trong trường hợp Nexus, bạn cũng có thể xác định các quy tắc phức tạp hơn. Trong trường hợp của tôi, tôi đã có một vấn đề ở đó mà không có lỗi trong thời gian mvn deploy nhưng tôi có thể thấy một lỗi trong nhật ký của máy chủ.

Hãy thử làm theo dữ liệu: Bật gỡ lỗi (mvn -X) để xem nơi Maven tải lên dữ liệu. Sau đó, kiểm tra máy chủ để xem các tạo phẩm có thực sự được tải lên hay không. Kiểm tra nhật ký lỗi của máy chủ.

Cũng lưu ý rằng phụ thuộc chụp nhanh chỉ được làm mới một lần mỗi ngày; vì vậy đây sẽ không làm việc:

PC# 1: mvn install -> Lỗi mất tích phụ thuộc PC# 2: mvn deploy PC# 1: mvn install -> phụ thuộc vẫn còn thiếu vì "cập nhật một lần mỗi ngày" chính sách

Hãy thử mvn install -U để buộc Maven làm mới siêu dữ liệu được lưu trong bộ nhớ cache của nó.

+0

Kiểm tra repo cục bộ của bạn ('$ HOME/.m2/repository /'): Hệ thống phân cấp thư mục có tồn tại ở đó không? Có tệp '* metadata * .xml' ở đâu đó không? Nó chứa gì? Bạn có thấy yêu cầu tải xuống trên máy chủ Nexus của mình không? –

+0

Tôi hiện không sử dụng máy chủ nexus của mình. Tôi đang sử dụng kho lưu trữ ảnh chụp nhanh sonatype. Kiểm tra EDIT2 của tôi. – chrisapotek

+0

Tìm cách lấy nhật ký từ thể hiện Naxus đang chạy ở Sonatype. Cũng đọc tất cả các câu hỏi của tôi; chúng không phải lúc nào cũng phụ thuộc vào nhau. Một trong số đó có thể dẫn bạn đi đúng hướng. –

0

Tôi nhấn vào vấn đề chụp nhanh không cập nhật ngay cả khi cài đặt -U trên dòng lệnh. Đối với tôi vấn đề là khách hàng của tôi là Maven 3 và máy chủ là Maven 2, và trong Maven 3 ảnh chụp nhanh độc đáo không còn được hỗ trợ nữa. Chúng tôi đã phải tạo một kho lưu trữ mới với các ảnh chụp nhanh được định thời gian để hỗ trợ các máy khách 3.xx.

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