Ant:使用exec和Git来获取文件的提交修订并输出到属性文件

时间:2015-10-01 20:37:46

标签: git ant

我正在设置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

1 个答案:

答案 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