我在几个目录中有一组文件,我想压缩这些文件,然后删除。
fileset
s似乎需要指定一个特定的目录,而且看起来patternset
s可以重用,但我仍然必须有多个fileset
s(而且fileset
似乎是一个"遗留"数据类型)。
files
可能是我想要的,但我看不到使用它重用文件列表的方法
我希望能够做这样的事情:
<files id="myfiles" includes="artifacts.jar content.jar
/plugins/*.jar /features/*.jar" />
<target name="zip">
<zip destfile="dest.zip">
<files ref="myfiles">
</zip>
</target>
<target name="clean">
<delete>
<files ref="myfiles">
</delete>
</target>
实现这一点最干净的方法是什么?
路径包含嵌套资源,例如文件集
<project default="main">
<path id="myfiles">
<fileset dir="/path/to/some/dir">
<include name="**/*.xml"/>
</fileset>
<fileset dir="/path/to/some/other/dir">
<include name="**/*.xslt"/>
</fileset>
<!-- ... -->
</path>
<target name="zip">
<zip destfile="dest.zip">
<path refid="myfiles"/>
</zip>
</target>
<target name="clean">
<delete>
<path refid="myfiles"/>
</delete>
</target>
<target name="main" depends="zip,clean"/>
</project>
我最终通过将fileset
的dir
作为根并使用fileset
中的多个include
元素将特定文件包含在特定子目录中来实现这一点。类似这样的东西:
<fileset dir="." id="fileset.my_files">
<include name="file1.jar" />
<include name="dir1/*.jar" />
</fileset>
<target name="build_zip">
<zip destfile="${dist}/${zip.file}">
<fileset refid="fileset.my_files" />
</zip>
</target>
<!-- etc -->