我有一个包含几个jar文件的文件夹,它们都应该转到类路径:
<path id="my.classpath">
<fileset dir="/tmp/mylibs" includes="*.jar" />
</path>
现在我希望能够将所有这些jar文件作为单独的属性引用, 例如如果我有两个jar文件foo.jar和bar.jar那么我希望能够像
那样引用它们${foo.jar} (== /tmp/mylibs/foo.jar)
${bar.jar} (== /tmp/mylibs/bar.jar)
这在Ant中是否有可能?
谢谢,彼得
答案 0 :(得分:0)
在ant-contrib的帮助下,你可以试试这个:
<target name="test">
<ac:for param="file">
<fileset dir="/tmp/mylibs" includes="*.jar"/>
<sequential>
<antcall target="setImpl">
<param name="file" value="@{file}"/>
</antcall>
<echo>param: @{file}</echo>
</sequential>
</ac:for>
</target>
<target name="setImpl">
<property name="filename" value="${file}" />
<echo>property: ${filename}</echo>
</target>
对于覆盖属性值(如果需要),您还可以使用ant-contrib
答案 1 :(得分:0)
Ivy有artifactproperty任务,旨在为您完成此任务。
此解决方案的唯一问题是,它假设您使用常春藤来解析依赖关系并管理类路径。
答案 2 :(得分:0)
将整个类路径放入单个属性的简单方法:
<path id="my.classpath">
<fileset dir="/tmp/mylibs" includes="*.jar" />
</path>
<property name="classpath.property" refid="my.classpath"/>
<echo message="Classpath = "${classpath.property}""/>
我相信这可以在Eclipse .classpath文件中使用。我现在面前没有一个人。如果你必须操纵它,你可以通过带有过滤链的<concat>
任务来完成它。