我有一个ANT脚本,我有很多重复的路径到相同的集JAR文件.但是在类路径和war元素中有这么多双重措辞.
<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>
Run Code Online (Sandbox Code Playgroud)
我想将它们汇总到一个更容易保持更新的列表中.
但我被阻止,因为我不知道如何与类似文件集的结构共享类似路径的结构.
mar*_*ton 12
从Ant 1.8.0开始,有一个新的资源集合 - mappedresources可以用来代替war任务lib元素.
所以,任务可能看起来像这样(几乎直接来自文档):
<war ... >
<mappedresources>
<restrict>
<path refid="my.classpath"/>
<type type="file"/>
</restrict>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="WEB-INF/lib/*"/>
</chainedmapper>
</mappedresources>
</war>
Run Code Online (Sandbox Code Playgroud)
添加此功能是为了解决长期功能请求,以便在部署到任务时使任务变平WEB-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>
Run Code Online (Sandbox Code Playgroud)
另一种可能性是使用ant-contrib pathtofileset任务.
| 归档时间: |
|
| 查看次数: |
3059 次 |
| 最近记录: |