我有一个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任务不像其他一些任务那样支持<include>
嵌套标记)。
经过进一步的研究,pathconvert
看起来可能会有所帮助。不过,我对机械还不够熟悉,不知道如何把东西拼凑在一起。
经过一些尝试和错误,我找到了一个使用fileset
和pathconvert
的解决方案-这是我的简化解决方案:
<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" />
- 我使用
fileset
来指定jar的模式和位置 - 我使用
pathconvert
将找到的jar文件引用放置到一个属性中 - 然后,我可以在
java
任务中简单地引用该属性