使用不同文件格式的变量进行构建自动化

时间:2012-06-06 14:37:28

标签: ant build-automation

我有一个很大的项目,它的构建自动化由ant完成。我需要一些想法或解决方案来改变所有文件中的一些常见变量。

例如,公司名称,产品名称或年份包含在许多文件中:帮助文件(html),许可证和配置文件(txt,xml),源代码(java->类)等。是否有为这些设置变量的简单方法,并使所有文件快速更改?也欢迎使用不同的工具。

总是可以选择添加一些代码来打开文件,找到位置并更改字符串,但这似乎不是一个优雅的解决方案。

谢谢。

2 个答案:

答案 0 :(得分:2)

ant CopyMove任务都支持filterset元素。使用此方法,您可以将令牌的全局替换应用于文件集中的文件。

简单示例:

<target name="test">
    <mkdir dir="build"/>
    <copy todir="build">
        <fileset dir="src">
            <include name="*.txt"/>
        </fileset>
        <filterset>
            <filter token="COMPANY_NAME" value="Acme Inc."/>
        </filterset>
    </copy>
</target>

输出:

$ cat src/foo.txt
I work for @COMPANY_NAME@.
$
$ cat build/foo.txt
I work for Acme Inc..

答案 1 :(得分:1)

我喜欢以下ANT解决方案:

http://www.richardnichols.net/2009/08/automatically-updating-your-source-file-headers-with-ants-replaceregexp/

使用replaceregexp任务查找并修复缺少许可证标题的Java文件:

<target name="replace_headers">
    <loadfile property="javaheader" srcFile="lib/standardheader.txt"/>
    <replaceregexp match="(/\*.*\*/.*)??^package " flags="sm"
        replace="${javaheader}${line.separator}package ">
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </replaceregexp>
</target>

简单且不需要在Java源代码中替换令牌。