为Ant的java任务指定一个匹配模式的jar?

时间:2015-03-19 18:24:12

标签: java ant jar build

我有一个与某个模式匹配的jar文件,但是包含一个随时间变化的版本号(它使用依赖项管理器放置在那里)。它是该目录中唯一的jar文件。有没有办法可以使用目录和(如果需要)模式来调用Ant的java任务来查找jar文件而不是静态指定文件名?每次版本更改时,我都不必更新build.xml。

所以给出这样的东西:

/path/to/some/jarfile-3.24.8.jar

......后来可能会这样:

/path/to/some/jarfile-4.3.2.jar

我可以达到相当的效果吗?

<java jar="path/to/some/jarfile-*.jar" fork="true" spawn="true" />

思想

我想也许我可以使用fileset任务进行操作,但我找不到从java任务引用它的方法(并且java任务不支持{{1}嵌套标签就像其他一些任务一样)。

......经过进一步研究,<include>看起来可能有所帮助。我不熟悉机制,看看如何将事情拼凑在一起。

1 个答案:

答案 0 :(得分:0)

经过一些反复试验,我找到了使用filesetpathconvert的解决方案 - 这是我的简化解决方案:

<fileset dir="/path/to/some" id="jarfile-path-contents" includes="jarfile-*.jar" />
<pathconvert property="file.jarfile" refid="jarfile-path-contents" />
<java jar="${file.jarfile}" fork="true" spawn="false" />
  1. 我使用fileset来指定jar的模式和位置​​。
  2. 我使用pathconvert将找到的jar文件引用放入属性中。
  3. 然后我能够在我的java任务中简单地引用该属性。