蚂蚁 – 过滤使用refid引用的文件集

我有一个文件集(从Maven Ant任务返回),它包含我需要重新打包的所有jar。此文件集由refid引用。我只想包括我们自己的罐子,所以我想过滤。但是如果使用refid,Ant文件集不支持任何其他属性或嵌套标签。

例如,如果文件集是:

org.foo.1.jar
org.foo.2.jar
log4j.jar

我想要一个仅包含的文件集

org.foo*.jar

我该怎么办?

尝试使用restrict资源集合,您可以使用任何使用资源集合的任务中的文件集来选择要操作的文件组。

例如,对于通过名为dependency.fileset的id引用的Maven任务返回的文件集,您可以声明如下所示的限制资源集合:

<restrict id="filtered.dependencies">
    <fileset refid="dependency.fileset"/>
    <rsel:name name="org.foo*.jar"/>
</restrict>

注意,您必须声明资源选择器命名空间,因为它不是内置的Ant命名空间的一部分:

<project xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
    ...
</project>

从这里,您可以以类似的方式引用限制资源集合,以引用您的文件集。例如,要创建已筛选的文件集的备份:

<copy todir=".">
    <restrict refid="filtered.dependencies"/>
    <globmapper from="*" to="*.bak"/>
</copy>

当然,如果您愿意,可以内联限制资源集合:

<copy todir=".">
    <restrict>
        <fileset refid="dependency.fileset"/>
        <rsel:name name="org.foo*.jar"/>
    </restrict>
    <globmapper from="*" to="*.bak"/>
</copy>

有关更多信息,请查看resource collections的Ant文档。

http://stackoverflow.com/questions/607338/filter-a-fileset-referenced-using-a-refid

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:蚂蚁 – 过滤使用refid引用的文件集