我正在设置一个Ant文件,以便从Bitbucket获取提交修订并将该值输出到名称中。属性文件,我有一个代码。版本=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
代码。Version首先由result属性设置(顺便说一句,这是exec的退出代码)。Ant不允许改变属性值,所以loadfile不会重置code.version。尝试从代码中重命名结果属性。将echo移到loadfile之后,就可以得到你想要的结果。
<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>
一旦我改变了网站。当我运行: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