So, here's how I'd do it.  Is there a better way?

  <target name="main">
    <if>
      <equals arg1="${major.increment}" arg2="true"/>
      <then>
        <buildnumber file="major.number"/>
        <propertycopy name="major.number" from="build.number"/>
        <property file="minor.number"/>
        <setPropertyInFile
            var.filename="${minor.number}"
            var.varname="${build.number}"
            var.oldvalue="${build.number}"
            var.newvalue="0"
        />
      </then>
      <else>
        <property file="major.number"/>
        <propertycopy name="major.number" from="build.number"/>
        <buildnumber file="minor.number"/>
      </else>
    </if>
    <property name="full.buildnumber" value="${major.number}.${minor.number}"/>
  </target>

  <macrodef name="setPropertyInFile">
    <attribute name="var.filename"/>
    <attribute name="var.varname"/>
    <attribute name="var.oldvalue"/>
    <attribute name="var.newvalue"/>
    <sequential>
      <replace file="@{var.filename}" token="@{var.varnam...@{var.oldvalue}" 
value="@{var.varnam...@{var.newvalue}"/>
    </sequential>
  </macrodef>




________________________________
From: Eric Fetzer <elstonk...@yahoo.com>
To: Ant Users <user@ant.apache.org>
Sent: Friday, May 1, 2009 9:31:50 AM
Subject: Reset BuildNumber

What is the prescribed method of setting properties in a property file?  
Specifically, I'm speaking of a file that keeps track of one of the build 
numbers.  Here's a simple example with what I'd like to do in it:

  <target name="main">
    <if>
      <equals arg1="${major.increment}" arg2="true"/>
      <then>
        <buildnumber file="major.number"/>
        <propertycopy name="major.number" from="build.number"/>
        <!--This would be great, but is my imagination, how would it really 
work?-->
        <buildnumber file="minor.number" reset="true"/>
        <propertycopy name="minor.number" from="build.number"/>
      </then>
      <else>
        <property file="major.number"/>
        <propertycopy name="major.number" from="build.number"/>
        <buildnumber file="minor.number"/>
        <propertycopy name="minor.number" from="build.number"/>
      </else>
    </if>
    <property name="full.buildnumber" value="${major.number}.${minor.number}"/>
  </target>

Thanks,
Eric


      

Reply via email to