我有一个 ANT 脚本,并且有很多相同的 JAR 文件集的重复路径。
但是类路径和战争元素中有很多双重措辞。
<path id="my.classpath">
<pathelement location="folderA/subFolderA/1.0/A.jar"/>
<pathelement location="folderC/subFolderB/1.0/B.jar"/>
<pathelement location="folderF/subFolderZ/2.0/Z.jar"/>
<pathelement location="compile/subFolderX/1.0/onlyForJavac.jar"/>
</path>
....
<javac ...>
<classpath refid="my.classpath" />
</javac>
....
<war ...>
<lib file="folderA/subFolderA/1.0/A.jar"/>
<lib file="folderC/subFolderB/1.0/B.jar"/>
<lib file="folderF/subFolderZ/2.0/Z.jar"/>
<lib file="moreFolderF/subFolderZ/2.0/additionFile.jar"/>
<lib file="moreFolderF/subFolderZ/2.0/additionRuntimeFile.jar"/>
</war>
我想将它们总结为一个列表,这样更容易保持更新。
但我被阻止了,因为我不知道如何与类似文件集的结构共享类似路径的结构。
从 Ant 1.8.0 开始,出现了一个新的资源集合 -mappedresources那
可以用来代替war
task lib
元素。
因此,任务可能如下所示(几乎直接来自文档):
<war ... >
<mappedresources>
<restrict>
<path refid="my.classpath"/>
<type type="file"/>
</restrict>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="WEB-INF/lib/*"/>
</chainedmapper>
</mappedresources>
</war>
添加此功能是为了解决长期存在的功能请求使
任务在部署到时压平 jarWEB-INF/lib
.
以前的回答:
虽然您无法使用 vanilla Ant 轻松地将路径转换为文件集,但您可以采用其他方法。
因此,一种选择是在文件集中定义 jar,并从中导出路径。
也许是这样的:
<fileset id="my.fileset" dir="${basedir}">
<include name="folderA/subFolderA/1.0/A.jar"/>
<include name="folderC/subFolderB/1.0/B.jar"/>
<include name="folderF/subFolderZ/2.0/Z.jar"/>
<include name="moreFolderF/subFolderZ/2.0/additionFile.jar"/>
<include name="moreFolderF/subFolderZ/2.0/additionRuntimeFile.jar"/>
</fileset>
<path id="my.classpath">
<fileset refid="my.fileset" />
</path>
<!-- javac stays the same -->
<war ...>
<lib refid="my.fileset" />
</war>
另一种可能性是使用蚂蚁贡献 pathtofileset task.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)