我正在设置Ant文件以从Bitbucket获取提交修订版并将该值输出到name.properties文件中,其中我有一个code.version = 12345代码行。我想用当前版本号更新该值。这就是我现在所拥有的:
<property name="site" value="${dir}" />
<property name="site.properties" value="../${site}/site.properties" />
<target name="get-core-version">
<exec executable="git" outputproperty="git.version">
<arg value="log" />
<arg value="--pretty=format:%h" />
<arg value="-1" />
</exec>
<propertyfile file="${site.properties}" comment="Core code revision number">
<entry key="core.version" value="${git.version}" />
</propertyfile>
</target>
现在,当我运行上面的命令时,它返回0.但是,如果我通过命令行运行它,一切都很好并返回我对它的期望。
我从属性文件中的上述代码得到的结果是:
#Core code revision number
#Fri, 02 Oct 2015 16:10:40 -0400
core.version=b3cd3d7
答案 0 :(得分:1)
code.version首先由result属性设置(这是exec的退出代码,btw)。 Ant不允许更改属性值,因此loadfile不会重置code.version。尝试将resultproperty从code.version重命名为其他东西,并在loadfile之后移动echo以获得你想要的东西。
<project name="project" default="get-core-version" basedir=".">
<property name="site" value="${dir}" />
<property name="site.properties" location="${site}/site.properties" />
<target name="get-core-version">
<exec executable="git" failonerror="true" resultproperty="get.exit.code" output="${site.properties}">
<arg value="log" />
<arg value="--pretty=oneline" />
<arg value="HEAD" />
<arg value="-1" />
<arg value="--" />
<arg value="${site}" />
</exec>
<echo message="Git Status: ${get.exit.code}" />
<loadfile srcFile="${site.properties}" property="core.version" />
<echo message="Core Version: ${core.version}" />
</target>
</project>
如上所述更改site.properties并在运行时删除属性文件行:ant -Ddir=rice-tools-test
我得到:
Buildfile: /r/eghm_rice_20150804/build.xml
get-core-version:
[echo] Git Status: 0
[echo] Core Version: 25815faedd7e5c2d4bcf3ab358de36ebb8715def Extract Highlighting from WebDriverUtils to WebDriverHighlightHelper.
BUILD SUCCESSFUL
Total time: 0 seconds