我有一个名为versionInfo.txt的文件。此文件包含以下文本:“Implementation-Version:7.5.0.1”。
我需要检索版本值并将此版本值复制到Java文件。 Java文件将具有以下变量:
version = "@version-info@";
我需要将此@ version-info @替换为我从第一个文件中检索到的值。我需要在使用ant脚本编写的现有build.xml文件中插入此代码。
答案 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>