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



我有一个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看起来可能会有所帮助。不过,我对机械还不够熟悉,不知道如何把东西拼凑在一起。

经过一些尝试和错误,我找到了一个使用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任务中简单地引用该属性

最新更新