从文本文件中检索值,并使用ant脚本将该值替换为另一个文件中的字符串常量

时间:2011-12-08 15:44:29

标签: text ant replace

我有一个名为versionInfo.txt的文件。此文件包含以下文本:“Implementation-Version:7.5.0.1”。

我需要检索版本值并将此版本值复制到Java文件。 Java文件将具有以下变量:

version = "@version-info@";

我需要将此@ version-info @替换为我从第一个文件中检索到的值。我需要在使用ant脚本编写的现有build.xml文件中插入此代码。

2 个答案:

答案 0 :(得分:4)

创建一个这样的属性文件,并将其命名为build.properties

version.label=7.5.0.1

然后在build.xml文件中

<project basedir=".">

    <target name="replace-labels">

        <property file="${basedir}/build.properties"/>

        <replace
            file="${basedir}/myClass.java"
            token="@version-info@"
            value="${version.label}" />

     </target>

</project>

所以你的文件结构应该是

myproject
    build.properties
    build.xml
    myClass.java

然后,您可以通过更改为“myproject”目录并执行

来执行ANT构建
ant replace-labels

replace标记将在myClass.java文件中查找字符串“@ version-info @”,并将其替换为值“7.5.0.1”

答案 1 :(得分:0)

对于问题的第二部分,检索版本信息..: 如果你需要从jar的Manifest中读取Implementation-Version,你可以使用macrodef,f.e。 :

<!-- Grep a keyvalue from Manifest -->
<macrodef name="mfgrep">
  <attribute name="jar"/>
  <attribute name="key"/>
  <attribute name="catch"/>
    <sequential>
      <loadproperties>
        <zipentry zipfile="@{jar}" name="META-INF/MANIFEST.MF"/>
      </loadproperties>
        <property name="@{catch}" value="${@{key}}"/>
    </sequential>
</macrodef>

 <mfgrep
   jar="/home/rosebud/temp/ant.jar"
   key="Implementation-Version"
   catch="foobar"
 />

<echo>$${foobar} => ${foobar}</echo>