Hi,

>>    <condition property="JOF" value="F:/Inetpub/wwwroot/wo30">
>>      <isset property="env.BUILD_BOX"/>
>>    </condition>

This would also enable the "build system settings" if environment
variable BUILD_BOX is set to "false". Would be better to check
existence and then variable's content as well - just to avoid any
confusion.

A second thought on maintaining such a script later on - you would
move "F:/Inetpub/wwwroot/wo30" into a property cause you don't want to
have such hard-wired paths in your build scripts, do you?

Perhaps you should drop the idear of depending on environment
variables and depend on (property) files instead, for example:

<project>
  <property file="buildsystem.properties" />
  <property file="common.properties" />
  <echo>JOF=${JOF}</echo>
</project>

Property file "buildsystem.properties" would only exist on
build-servers while "common.properties" is assumed to exist on
developer and build-server hosts. Then

== buildserver.properties ==
JOF = F:/Inetpub/wwwroot/wo30

== common.properties ==
JOF=C:/Inetpub/wwwroot/wo30

Notice that <property /> graciously ignores non-existent files. You
may also want to put those <property /> tasks  directly below <project
/> to ensure that your properties are set before *any* target is
executed. Btw, you should also assert that property JOF is set to
avoid unexpected script behavior.

// Wolfgang




On Mon, Jun 6, 2011 at 7:33 PM, Brian McCann <bmccan...@comcast.net> wrote:
> 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?
>
>
>
> 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?
>
> 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>
>
> 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
>
>



-- 
Wolfgang Häfelinger
häfelinger IT - Applied Information Technology
http://www.haefelinger.it

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to