选项 1
一种方法是使用artifactpropery 任务,根据类似于retrieve 任务工作方式的模式设置具有依赖版本的属性。
<ivy:artifactproperty name="[artifact].ver" value="[revision]"/>
<echo message="Version: ${slf4j-api.ver}"/>
选项 2
我的替代偏好是使用配置并简单地在构建工作区中创建一个文件名中没有修订的文件,如下所示:
<ivy:retrieve pattern="target/zips/[artifact].[ext]" conf="zips"/>
这需要一个 ivy 文件,该文件具有特殊的“zips”配置设置和依赖声明上的配置映射:
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="zips->default"/>
示例(选项 2)
在本例中,在“lib”目录下设置了 3 个不同的类路径,并在 zips 目录中填充了一个 jar 文件,其文件名中没有修订:
├── build.xml
├── ivy.xml
├── lib
│ ├── compile
│ │ └── slf4j-api-1.7.5.jar
│ ├── runtime
│ │ ├── log4j-1.2.17.jar
│ │ ├── slf4j-api-1.7.5.jar
│ │ └── slf4j-log4j12-1.7.5.jar
│ └── test
│ ├── hamcrest-core-1.3.jar
│ ├── junit-4.11.jar
│ ├── log4j-1.2.17.jar
│ ├── slf4j-api-1.7.5.jar
│ └── slf4j-log4j12-1.7.5.jar
└── target
└── zips
└── slf4j-api.jar
build.xml
<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="resolve">
<ivy:resolve/>
</target>
<target name="build" depends="resolve">
<!-- Populate the "lib" directory -->
<ivy:retrieve pattern="lib/[conf]/[artifact]-[revision](-[classifier]).[ext]" conf="compile,runtime,test"/>
<!-- Populate the "target/zips" directory -->
<ivy:retrieve pattern="target/zips/[artifact].[ext]" conf="zips"/>
</target>
</project>
ivy.xml
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<configurations>
<conf name="compile" description="Required to compile application"/>
<conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
<conf name="test" description="Required for test only" extends="runtime"/>
<conf name="zips" description="Additional configuration for demo"/>
</configurations>
<dependencies>
<!-- zips + compile dependencies -->
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="zips,compile->default"/>
<!-- runtime dependencies -->
<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" conf="runtime->default"/>
<!-- test dependencies -->
<dependency org="junit" name="junit" rev="4.11" conf="test->default"/>
</dependencies>
</ivy-module>
注意:
- slf4j-api 包含在“zips”和“compile”配置中。