使用Ant向目录中的所有文件添加版权声明

时间:2010-08-16 18:23:02

标签: ant

我想在Ant构建中生成的一系列文件中添加版权声明。最简单的方法是什么?

我考虑过使用<concat>,但我不明白如何在没有连接文件集中的所有文件的情况下在文件集上运行它。

谢谢!

4 个答案:

答案 0 :(得分:7)

看起来<concatfilter>可能是您的朋友。

<echo message="/* Copyright text */${line.separator}" file="copyright.txt"/>

<copy todir="dest_dir">
  <fileset dir="src_dir"/>
  <filterchain>
    <concatfilter prepend="copyright.txt"/>
  </filterchain>
</copy>

答案 1 :(得分:2)

如果您只想有选择地添加版权,则可以使用复制命令替换文件中的@ COPYRIGHT @令牌。

  <copy todir="../backup/dir">
    <fileset dir="src_dir"/>
    <filterset>
      <filter token="COPYRIGHT" value="This text is my copyright!"/>
    </filterset>
  </copy>

答案 2 :(得分:1)

目前尚未提及的一个选项是在Java中编写自定义Ant任务。我意识到还有许多因素需要考虑,而不仅仅是在一个自定义任务开始我自己的工作之后预先挂起文件的许可,该自定义任务的要求超过了#concat&#39;可以处理。我必须考虑的一些场景和规则:

  1. 每个要分发的文件应包含1份且只有1份许可证。
  2. 当前文件是否有许可证?
  3. 当前文件是否具有当前许可证?
  4. 如果文件以评论开头,它是许可证,是最新的吗?
  5. 这是一个需要许可证的文件吗? (不要将文本写入二进制文件,或者不能分发的文件。)
  6. 它仍在进行中,所以我不一定要分享任何代码,但如果您的要求超出以下范围,这个想法可能会帮助您找到正确的方向。盒子蚂蚁可以处理,你不想使用antcontrib。

    如果您正在使用或考虑maven,那么现在是时候进行切换了。您可以从pom.xml驱动ant构建,也可以在构建之前进行任何文件预处理。看看开箱即用的mycila插件。

    Writing your own ant task

    Maven in 5 minutes

    Link to Mycila Maven plugin

答案 3 :(得分:0)

一个选项可能是使用<concat>但在antcontrib <foreach>任务中。