2010-03-08 29 views
5

Tôi đang cố gắng giải quyết các phụ thuộc SNAPSHOT được định thời gian với Ivy.Giải quyết các phụ thuộc SNAPSHOT với dấu thời gian từ Ivy

Môi trường là Ant + Ivy 1.2.0 + Archiva. Bản thân Archiva được xây dựng từ Maven2. Ivy chỉ được sử dụng để giải quyết các phụ thuộc (từ một dự án duy nhất, không phải Maven2).


Làm thế nào để Ivy có thể được định cấu hình để phân giải chính xác các hiện vật có dấu thời gian từ kho lưu trữ Archiva hoặc m2?


Để tham khảo cấu hình hiện tại của tôi là:

ivysettings.xml trông tương tự như:

<ivysettings> 
    <settings defaultResolver="archiva-chain"/> 

    <resolvers> 
     <chain name="archiva-chain" changingPattern=".*SNAPSHOT" checkmodified="true"> 

     <ibiblio name="archiva-internal" 
       m2compatible="true" 
       usepoms="true" 
       pattern="[organization]/[module]/[revision]/[artifact]-[revision].[ext]" 
       root="http://host:port/archiva/repository/internal"/> 

     <ibiblio name="archiva-deploy" 
       m2compatible="true" 
       usepoms="true" 
       pattern="[organization]/[module]/[revision]/[artifact]-[revision].[ext]" 
       root="http://host:port/archiva/repository/deploy"/> 

     <ibiblio name="archiva-snapshots" 
       m2compatible="true" 
       usepoms="true" 
       pattern="[organization]/[module]/[revision]/[artifact]-[revision].[ext]" 
       root="http://host:port/archiva/repository/snapshots"/> 
    </chain> 
    </resolvers> 
</ivysettings> 

Các ivy.xml phụ thuộc rất đơn giản:

<ivy-module version="2.0"> 
    <info organisation="com.myorg" module="myapp"/> 
    <dependencies> 
     <dependency org="com.myorg" name="myartifact" rev="1.8.0-SNAPSHOT" changing="true"/> 
    </dependencies> 
</ivy-module> 

Ivy không cố gắng giải quyết hiện vật có dấu thời gian. Ví dụ.

[ivy:retrieve] :: problems summary :: 
[ivy:retrieve] :::: WARNINGS 
[ivy:retrieve]   module not found: com.myorg#myartifact;1.8.0-SNAPSHOT 
[ivy:retrieve] ==== archiva-internal: tried 
[ivy:retrieve] -- artifact com.myorg#myartifact;1.8.0-SNAPSHOT!myartifact.jar: 
[ivy:retrieve] http://host:port/archiva/repository/internal/com.myorg/myartifact/1.8.0-SNAPSHOT/myartifact-1.8.0-SNAPSHOT.jar 
[ivy:retrieve] ==== archiva-deploy: tried 
[ivy:retrieve] -- artifact com.myorg#myartifact;1.8.0-SNAPSHOT!myartifact.jar: 
[ivy:retrieve] http://host:port/archiva/repository/deploy/com.myorg/myartifact/1.8.0-SNAPSHOT/myartifact-1.8.0-SNAPSHOT.jar 
[ivy:retrieve] ==== archiva-snapshots: tried 
[ivy:retrieve] -- artifact com.myorg#myartifact;1.8.0-SNAPSHOT!myartifact.jar: 
[ivy:retrieve] http://host:port/archiva/repository/snapshots/com.myorg/myartifact/1.8.0-SNAPSHOT/myartifact-1.8.0-SNAPSHOT.jar 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]   ::   UNRESOLVED DEPENDENCIES   :: 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]   :: com.myorg#myartifact;1.8.0-SNAPSHOT: not found 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve] 
[ivy:retrieve] 
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS 

Có một maven-metadata.xml trong snapshots/com/myorg/myartifact:

<?xml version="1.0" encoding="UTF-8"?> 

<metadata> 
    <groupId>com.myorg</groupId> 
    <artifactId>myartifact</artifactId> 
    <versioning> 
    <latest>1.8.0-SNAPSHOT</latest> 
    <versions> 
     <version>1.3.0-SNAPSHOT</version> 
     <version>1.4.2-SNAPSHOT</version> 
     <version>1.6.1-SNAPSHOT</version> 
     <version>1.8.0-SNAPSHOT</version> 
    </versions> 
    <lastUpdated>20100303003206</lastUpdated> 
    </versioning> 
</metadata> 

Các maven-metadata.xml trong snapshots/com/myorg /myartifact/1.8.0-SNAPSHOT:

<?xml version="1.0" encoding="UTF-8"?> 

<metadata> 
    <groupId>com.myorg</groupId> 
    <artifactId>myartifact</artifactId> 
    <version>1.8.0-SNAPSHOT</version> 
    <versioning> 
    <snapshot> 
     <buildNumber>7</buildNumber> 
     <timestamp>20100303.003206</timestamp> 
    </snapshot> 
    <lastUpdated>20100303003206</lastUpdated> 
    </versioning> 
</metadata> 

Không phải tất cả những gì hữu ích, nhưng cho đầy đủ, các tập tin trong thư mục snapshots/com/myorg/myartifact/1.8.0-SNAPSHOT cho ảnh chụp tham khảo:

-rw-r--r-- 1 archiva archiva 240670 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.jar 
-rw-r--r-- 1 archiva archiva  32 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.jar.md5 
-rw-r--r-- 1 archiva archiva  40 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.jar.sha1 
-rw-r--r-- 1 archiva archiva 4068 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.pom 
-rw-r--r-- 1 archiva archiva  32 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.pom.md5 
-rw-r--r-- 1 archiva archiva  40 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7.pom.sha1 
-rw-r--r-- 1 archiva archiva 180821 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7-sources.jar 
-rw-r--r-- 1 archiva archiva  32 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7-sources.jar.md5 
-rw-r--r-- 1 archiva archiva  40 Mar 3 10:32 myartifact-1.8.0-20100303.003206-7-sources.jar.sha1 

Trả lời

8

Ivy hỗ trợ giải quyết các bức ảnh chụp ghi lại ngày tháng, nhưng với hạn chế sau: mô hình quy định về giải quyết ibiblio của bạn phải kết thúc với:

[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext] 

Đây không phải là trường hợp trong thiết lập của bạn, vì vậy Ivy sẽ không cố gắng tìm ảnh chụp ghi lại ngày tháng của bạn. Cập nhật mô hình của bạn với mô hình này sẽ giải quyết vấn đề của bạn; cập nhật định nghĩa kho lưu trữ archiva-snapshots của bạn thành:

<ibiblio name="archiva-snapshots" 
      m2compatible="true" 
      usepoms="true" 
      pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" 
      root="http://host:port/archiva/repository/snapshots"/> 

Lưu ý: hãy nhớ 'trong' tổ chức] thay vì 'z'.

Maarten

+0

Thật tuyệt vời. Nó hoạt động hoàn hảo. Cảm ơn. – bradhouse

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