gpt4 book ai didi

Ant 脚本: Prevent duplication of JAR in javac-classpath war-lib

转载 作者:行者123 更新时间:2023-12-04 03:40:42 26 4
gpt4 key购买 nike

我有一个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>

我想将它们汇总到一个列表中,这样更易​​于更新。

但由于不知道如何与类似文件集的结构共享类似路径的结构,所以我受阻。

最佳答案

从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>

添加此功能是为了解决 long-standing feature request问题
部署到 WEB-INF/lib时,任务会展平jars。

先前的答案:

尽管您无法使用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>

另一种可能性是使用 ant-contrib pathtofileset task

关于 Ant 脚本: Prevent duplication of JAR in javac-classpath war-lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5039505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com