使用ant svn task获取工作副本的版本?

时间:2014-08-19 18:11:22

标签: java svn ant

有没有办法使用svn ant任务获取工作副本的svn修订版号并将其放入变量?

我想在我的Java清单文件中添加一个条目,其中包含svn修订号,例如: 0.9.65361其中65361是修订号。

3 个答案:

答案 0 :(得分:6)

啊哈,我发现this idea,它只依赖于SVN中的svnversion命令行实用程序。

<project name="ant-exec-example" default="svnversion" basedir=".">
  <target name="svnversion">
    <exec executable="svnversion" outputproperty="svnversion" />
    <echo message="SVN Version: ${svnversion}"/>
  </target>
</project>

这是它捕获ant属性中的版本的地方:

<exec executable="svnversion" outputproperty="svnversion" />

答案 1 :(得分:0)

有几种方法 -

  
      
  1. 使用实用程序 - 我相信您正在寻找这个 - https://code.google.com/p/svntask/我已将它用于某些方面   项目并且效果很好。

  2.   
  3. 使用命令行工具。 - &#34; svn info http://svn.myweb.com/myproject&#34;。要使用此方法,只需创建一个   批处理文件并将此命令放在批处理文件中。然后打个电话   来自您的ant任务的批处理文件,并从中获取修订号   搜索的文本以行&#34; Revision:&#34;开头。或者你可以   只是转储整个结果。

  4.   

答案 2 :(得分:0)

这是我的变体,用于在应用程序工件中捆绑svn修订信息:

<target name="svn_revisions">
    <hostinfo prefix="HOST"/>
    <echo file="${dir.out}/.revisions" message="Built by ${user.name} on ${HOST.NAME}${line.separator}"/>
    <exec dir="${basedir}" executable="svn" output="${dir.out}/.revisions" append="true">
        <arg line="info"/>
    </exec>
    <exec dir="${basedir}" executable="svn" output="${dir.out}/.revisions" append="true">
        <arg line="status -u"/>
    </exec>
</target>

<target name="build-war" depends="compile, svn_revisions">
    <war basedir="web" file="${dir.out}/ROOT.war" webxml="web/WEB-INF/web.xml">
        <!-- main stuff -->
        <zipfileset dir="${dir.out}" prefix="META-INF" includes=".revisions"/>
    </war>
</target>