Many thanks for your help :) BPM -----Original Message----- From: Echlin, Robert [mailto:robert.ech...@windriver.com] Sent: Monday, June 06, 2011 1:51 PM To: Brian McCann Subject: RE: How change variable based on environment variable value
> -----Original Message----- > From: Brian McCann [mailto:bmccan...@comcast.net] > Sent: Monday, June 06, 2011 1:34 PM > To: 'Ant Users List' > Cc: Echlin, Robert > Subject: RE: How change variable based on environment variable value > > Hi Robert, > > couple questions to make sure I'm following you right. > > 1. I'm currently setting the value of JOF in the > build.userproperties file to " JOF=C:/Inetpub/wwwroot/wo30" > and even if I try to run a conditional in the build.xml file > < property name="JOF" value="F:/Inetpub/wwwroot/wo30"/> The > value of JOF gets set in stone when build.xml runs? > Build.properties files always override build.xml? Whatever gets set first stays set. Properties are immutable. > > > 2. Since I already have a file build.user.properties I could > just set the default value of JOF path in that file like > <property name="JOF" > value="C:/Inetpub/wwwroot/wo30"/> which would be the state > that the build file is not being run on the build box? No, a properties file is not an XML file. The "build.user.properties" file would look like: ---- two samples --- # Set JOF for my computer JOF=C:/Inetpub/wwwroot/wo30 -- OR -- # Set values for my computer JOF = C:/Inetpub/wwwroot/wo30 Princelieness = 100 --- end samples -- Notes about propertye files: - Space around the "=" is ignored - comment lines start with # > > so your code would look like: > > <?xml version="1.0" encoding="utf-8"?> > <project name="plugin-rules" basedir="." default="setJOF"> > <target name="setJOF"> > <property environment="env"/> > <echo>BUILD_BOX = ${env.BUILD_BOX}</echo> > <condition property="JOF" value="F:/Inetpub/wwwroot/wo30"> > <isset property="env.BUILD_BOX"/> > </condition> > <echo>JOF = ${JOF}</echo> > > <property file="build.user.properties" /> > <echo>After Property file, JOF = ${JOF}</echo> > </target> > > </project> Yuppers, you got it. This would load the build.user.properties file after the check for the BUILD_BOX variable. However, I would put this code VERY close to the top of the build.xml file, so that when you set other properties there, they are available early. And of course, if you want to override them, you need to do that before the properties are loaded from the local users file. :-) Anyway, you can use the pattern of setting the variable names to a "default" or "local" property name in the file, and then set the correct one before you use it, taking into account other info like the "BUILD_BOX" environment variable. Rob > > Thanks, > BPM > > > -----Original Message----- > From: Echlin, Robert [mailto:robert.ech...@windriver.com] > Sent: Monday, June 06, 2011 12:46 PM > To: Ant Users List > Subject: RE: How change variable based on environment variable value > > Hi Brian, > Try this code. > Note: you can't put the default value of JOF into a file that > will be loaded automatically when ant is run, such as > (home)/.antrc, as that would set JOF before your code > executes. First set works, last set fails. > > On the other hand, you could set "JOF_default" in a > properties file that is loaded before this code is run, then > have an "else" clause in your condition to use it when > BUILD_BOX is not set in your environment: > <condition property="JOF" value="F:/Inetpub/wwwroot/wo30" > else="${JOF_default}"> > > Rob > > ------------ simplified code ---------- > <?xml version="1.0" encoding="utf-8"?> > <project name="plugin-rules" basedir="." default="setJOF"> > <target name="setJOF"> > <property environment="env"/> > <echo>BUILD_BOX = ${env.BUILD_BOX}</echo> > <condition property="JOF" value="F:/Inetpub/wwwroot/wo30"> > <isset property="env.BUILD_BOX"/> > </condition> > <echo>JOF = ${JOF}</echo> > > <property file="jof.properties" /> > <echo>After Property file, JOF = ${JOF}</echo> > </target> > > </project> > ---------------- output of test run - no build-run --------- > C:\Documents and Settings\rechlin\My > Documents\test\TEST-ant>set BUILD_BOX= > > C:\Documents and Settings\rechlin\My > Documents\test\TEST-ant>echo %BUILD_BOX% %BUILD_BOX% > > C:\Documents and Settings\rechlin\My > Documents\test\TEST-ant>ant -f jof-test.xml > Buildfile: C:\Documents and Settings\rechlin\My > Documents\test\TEST-ant\jof-test.xml > > setJOF: > [echo] BUILD_BOX = ${env.BUILD_BOX} > [echo] JOF = ${JOF} > [echo] After Property file, JOF = C:/Inetpub/wwwroot/wo30 > > BUILD SUCCESSFUL > Total time: 0 seconds > ------------------------ output of test run with BUILD_RUN > set in the environment --------- C:\Documents and > Settings\rechlin\My Documents\test\TEST-ant>set BUILD_BOX=true > > C:\Documents and Settings\rechlin\My > Documents\test\TEST-ant>echo %BUILD_BOX% true > > C:\Documents and Settings\rechlin\My > Documents\test\TEST-ant>ant -f jof-test.xml > Buildfile: C:\Documents and Settings\rechlin\My > Documents\test\TEST-ant\jof-test.xml > > setJOF: > [echo] BUILD_BOX = true > [echo] JOF = F:/Inetpub/wwwroot/wo30 > [echo] After Property file, JOF = F:/Inetpub/wwwroot/wo30 > > BUILD SUCCESSFUL > Total time: 0 seconds > -------------------------------------------------- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@ant.apache.org For > additional commands, e-mail: user-h...@ant.apache.org > > = --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@ant.apache.org For additional commands, e-mail: user-h...@ant.apache.org