Search code examples
antbuild-processbuild-automation

Build multiple environments with a single target and single command(Anding -D and property file)


I have to create a single command to create multiple(dev|qa|uat) war/ear. Something like :

ant -f build.xml -Denv=dev|qa|uat -propertyfile= devProp|qaProp|uatProp 
  -Dstage.dir=devdir|qadir|uatdir

I already have different properties file, different staging, deploying target for each environment. I also have different .cmd files to build each of them separately.

What I am stuck at is: How do I build them all in one go?


Solution

  • You can use the <subant /> instruction in your target.

    Write down a new ant script (namely master.xml), assuming that your original build is in script build.xml, you can have something like:

    <target name="build-all">
       <subant target="build-prod">
         <fileset dir="." includes="build.xml"/>
         <propertyset ......../> <!-- properties for the prod build -->
       </subant>
       <subant target="build-dev">
         <fileset dir="." includes="build.xml"/>
         <propertyset ......../> <!-- properties for the dev build -->
       </subant>
    </target>