Apache Ivy如何解决ivysettings.xml文件中提供的工件模式中的变量?

时间:2009-03-26 15:09:11

标签: java ant ivy dependency-management

如果我的ivysettings.xml文件包含:

<url name="com.springsource.repository.bundles.external">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>

我的ivy.xml文件包括:

<dependency org="org.junit"
            name="com.springsource.org.junit" 
            rev="4.4.0" />

从我跑Ivy时,我可以说这解决了:http://repository.springsource.com/ivy/bundles/external/org.junit/com.springsource.org.junit/4.4.0/com.springsource.org.junit-sources-4.4.0.jar

所以决议是:

[organization] => "org.junit"
[module] => "com.springsource.org.junit"
[revision] => "4.4.0"
[artifact] => "com.springsource.org.junit-sources"
[ext] => "jar"

我看到常春藤如何解析URL模式(duh)中的[组织],[模块]和[版本],但它如何解析[artifact]和[ext]?

documentation on the URL resolver似乎缺乏。

1 个答案:

答案 0 :(得分:6)

Ivy首先解析<ivy pattern... />,其中包含组织,模块和修订,并且[artifact]硬编码为“ivy”,[ext]硬编码为“xml”。这会产生一个URL,在这种情况下:

http://repository.springsource.com/ivy/bundles/external/org.junit/com.springsource.org.junit/4.4.0/ivy-4.4.0.xml

这是此模块的常春藤配置文件。除其他外,此常春藤配置文件包含有关其他工件的信息,特别是:

<artifact name="com.springsource.org.junit-sources" type="src" ext="jar"/>
<artifact name="license" type="license" ext="txt"/>

这两个用于完成<artifact pattern... />部分 - 下载许可证并下载jar文件。