2010-03-08 216 views
5

我正在尝试解决与常春藤时间戳SNAPSHOT依赖关系。解决与从常春藤时间戳SNAPSHOT依赖关系

环境是Ant + Ivy 1.2.0 + Archiva。 Archiva本身是从Maven2构建中填充的。常春藤只用于解决依赖性(来自单个非Maven2项目)。


如何配置Ivy以正确解析来自Archiva或m2存储库的时间戳项目?


仅供参考我目前的配置是:

ivysettings.xml类似于:

<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> 

的ivy.xml依赖关系很简单:

<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: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 

有一个行家-metadata.xml中快照/ 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> 

行家-metadata.xml中快照/ 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> 

并非所有有用的,但为了完整起见,在目录中的文件快照/ COM/MYORG/myartifact/1.8.0-SNAPSHOT所引用的快照:

-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 

回答

8

常春藤支持解决时间戳的快照,但有以下限制:您ibiblio上分解的模式必须结束与:

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

这是不是在你的设置的情况下,这样常青藤就不会试图找到自己的时间戳的快照。更新你的模式到这个应该可以解决你的问题;更新您的档案快照资源库的定义为:

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

备注:介意[组织]中的's'而不是'z'。

马腾

+0

这太棒了。它完美的作品。谢谢。 – bradhouse 2010-03-23 02:26:27

相关问题