常春藤 - 将相同的依赖关系(两个不同的版本)解析为两个不同的文件

时间:2012-06-07 23:34:04

标签: ant dependencies ivy

我有一个特殊的情况,我需要打包一些罐子,我需要一个罐子的两个版本。我的常春藤定义如下:

<dependency org="blah" name="blahname" rev="1.0.0" conf="baseline->default" />

我希望相同的依赖项解析两次,一次使用版本1.0.0,另一次使用版本2.0.0。那可能吗?实现这一目标的最简单方法是什么。

1 个答案:

答案 0 :(得分:5)

使用常春藤配置来创建和管理自定义依赖关系组。

实施例

的ivy.xml

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations>
        <conf name="group1" description="First group of dependencies"/>
        <conf name="group2" description="Second group of dependencies"/>
    </configurations>

    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.6" conf="group1->default"/>
        <dependency org="commons-lang" name="commons-lang" rev="2.0" conf="group2->default"/>
    </dependencies>

</ivy-module>

的build.xml

<project name="demo" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">

    <target name="resolve">
        <ivy:resolve/>

        <ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]"/>
    </target>

</project>

备注:

  • 此示例使用检索任务填充“lib”目录。另请参阅“cachepath”和“cachefileset”任务。

结果

Lib目录中填充了所需的jar。

$ tree
.
|-- build.xml
|-- ivy.xml
`-- lib
    |-- group1
    |   `-- commons-lang-2.6.jar
    `-- group2
        `-- commons-lang-2.0.jar