Maven : Retrieve Subversion revision number with Ant

This page last changed on Feb 21, 2006 by Kees de Kooter

This ant task retrieves the revision number of HEAD using the svn.exe commandline tool. This has to be available on the path. Furthermore ant-contrib.jar needs to be present in the classpath. Altogether not a very portable solution...

<target name="find_revision">

    <property name="revision" value="HEAD"/>
    <property name="svn.root" value="svn://traffic01/var/svnroot/trafficits"/>
    <property name="log.dir" location="log"/>
    <property name="release.root" location="c:/var/projects/release"/>

    <!-- find out revision number of HEAD, need svn.exe installed on local machine -->
    <exec executable="svn" outputproperty="svnlog.out">
        <arg line="log ${svn.root} -r ${revision} -q"/>
    </exec>

    <echo>${svnlog.out}</echo>

    <!-- need ant-contrib.jar for this in lib dir of ant install -->
    <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>

    <propertyregex property="revision.number" input="${svnlog.out}"
        select="\1">
        <regexp pattern="r([0-9]*)"/>
    </propertyregex>

    <echo>Revision found: ${revision.number}</echo>

</target>

Comments:

I posted too soon. Here's the version that's working for me.

    <macrodef name="getsvnrevision">
        <attribute name="revision" default="HEAD"/>
        <attribute name="srcUrl"/>
        <attribute name="property"/>

        <sequential>
            <tempfile property="svninfo.log"/>
            <exec executable="svn" output="${svninfo.log}">
                <arg line="info @{srcUrl}"/>
            </exec>
            <loadfile property="@{property}" srcFile="${svninfo.log}">
                <filterchain>
                    <linecontainsregexp>
                        <regexp pattern="Last Changed Rev: "/>
                    </linecontainsregexp>
                    <deletecharacters chars="Last Changed Rev: "/>
                    <striplinebreaks/>
                </filterchain>
            </loadfile>
            <delete file="${svninfo.log}"/>
        </sequential>
    </macrodef>
Posted by at Sep 15, 2006 02:04

Thanks!

Posted by kees at Sep 15, 2006 09:37