如何在 Ant 中将文件名附加到文件本身

  • 本文关键字:文件 文件名 Ant ant
  • 更新时间 :
  • 英文 :


有没有办法使用 Ant 将每个文件的名称附加到它前面? 所以foo.txt会从

bar

// foo.txt
bar

这需要处理一组无法硬编码到 ant 脚本中的文件。

由于您要动态确定要使用的文件,因此建议您获取 ant-contrib.jar并利用其for任务。 我应该指出,这将在注释中写出文件的完整路径。

<!-- Sample usage -->
<target name="run">
  <prepend>
    <!-- Assuming you are interested in *.txt files in the resource directory -->
    <fileset dir="resource">
        <include name="**/*.txt"/>
    </fileset>
  </prepend>
</target>
<!-- Import the definitions from ant-contrib -->
<taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
    <pathelement location="../ant-contrib*.jar"/>
  </classpath>
</taskdef>
<!-- Create the prepend task -->
<macrodef name="prepend">
  <!-- Declare that it contains an element named "files".  Implicit means it needn't be named -->
  <element name="files" implicit="yes"/>
  <sequential>
    <!-- For loop, assigning the value of each iteration to "file" -->
    <for param="file">
      <!-- Give the for loop the files -->
      <files/>
      <sequential>
        <!-- Load the contents of the file into a property -->
        <loadfile property="@{file}-content" srcfile="@{file}"/> 
        <!-- Echo the header you want into the file -->
        <echo message="// @{file}${line.separator}" file="@{file}"/>
        <!-- Append the original contents to the file -->
        <echo message="${@{file}-content}" append="true" file="@{file}"/>
      </sequential>
    </for>
  </sequential>
</macrodef>

相关内容

  • 没有找到相关文章

最新更新