在Ant中重用不同任务中的文件集合



我在几个目录中有一组文件,我想压缩这些文件,然后删除。

filesets似乎需要指定一个特定的目录,而且看起来patternsets可以重用,但我仍然必须有多个filesets(而且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>

我最终通过将filesetdir作为根并使用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 -->

相关内容

  • 没有找到相关文章

最新更新