Hello,

I recognized some strange behavior while calling a conditional target
with <antcall/>. The goal was a switch between different build modes.
Here's the code:

<project name="test" default="generate" basedir=".">
        <property name="build_mode" value="foo"/>
        <!--  -->
        <target name="init">
                <condition property="build_bar">
                        <equals arg1="${build_mode}" arg2="bar" 
casesensitive="yes" trim="yes"/>
                </condition>
                <echo message="...  property build_bar: ${build_bar}"/>
                <condition property="build_foo">
                        <isfalse value="${build_bar}"/>
                </condition>
                <echo message="...  property build_foo: ${build_foo}"/>
        </target>
        <!--  -->
        <target name="generate" depends="init">
                <echo>generate ...</echo>
                <antcall target="generate_foo"/>
                <antcall target="generate_bar"/>
                <echo>finished.</echo>
        </target>
        <!--  -->
        <target name="generate_foo" if="${build_foo}" depends="init">
                <echo>generate foo ...</echo>
        </target>
        <!--  -->
        <target name="generate_bar" if="${build_bar}" depends="init">
                <echo>generate bar ...</echo>
        </target>
</project>

The target "generate_foo" is skipped, with the verbose option I get the
follwing lines:

...
     [echo] ...  property build_foo: true

generate_foo:
Skipped because property 'true' not set.
...

Is this a bug or a feature?

(I can solve my problem by rearranging the tasks, but I'm interested in
 an explanation.)

Stefan

----

Here's the whole verbose output:

Apache Ant version 1.7.1 compiled on June 27 2008
Buildfile: build.xml
Detected Java version: 1.6 in: C:\Programme\Java\jdk1.6.0_04\jre
Detected OS: Windows XP
parsing buildfile C:\temp\build.xml with URI = file:/C:/temp/build.xml
Project base dir set to: C:\temp
[antlib:org.apache.tools.ant] Could not load definitions from resource
org/apache/tools/ant/antlib.xml. It could not be found.
Build sequence for target(s) `generate' is [init, generate]
Complete build sequence is [init, generate, generate_bar, generate_foo, ]

init:
Property "build_bar" has not been set
     [echo] ...  property build_bar: ${build_bar}
Property "build_bar" has not been set
     [echo] ...  property build_foo: true

generate:
     [echo] generate ...
Project base dir set to: C:\temp
  [antcall] calling target(s) [generate_foo] in build file C:\temp\build.xml
parsing buildfile C:\temp\build.xml with URI = file:/C:/temp/build.xml
Project base dir set to: C:\temp
Override ignored for property "build_mode"
Build sequence for target(s) `generate_foo' is [init, generate_foo]
Complete build sequence is [init, generate_foo, generate, generate_bar, ]
  [antcall] Entering C:\temp\build.xml...
Build sequence for target(s) `generate_foo' is [init, generate_foo]
Complete build sequence is [init, generate_foo, generate, generate_bar, ]

init:
Property "build_bar" has not been set
     [echo] ...  property build_bar: ${build_bar}
Property "build_bar" has not been set
Override ignored for property "build_foo"
     [echo] ...  property build_foo: true

generate_foo:
Skipped because property 'true' not set.
  [antcall] Exiting C:\temp\build.xml.
Project base dir set to: C:\temp
  [antcall] calling target(s) [generate_bar] in build file C:\temp\build.xml
parsing buildfile C:\temp\build.xml with URI = file:/C:/temp/build.xml
Project base dir set to: C:\temp
Override ignored for property "build_mode"
Build sequence for target(s) `generate_bar' is [init, generate_bar]
Complete build sequence is [init, generate_bar, generate, generate_foo, ]
  [antcall] Entering C:\temp\build.xml...
Build sequence for target(s) `generate_bar' is [init, generate_bar]
Complete build sequence is [init, generate_bar, generate, generate_foo, ]

init:
Property "build_bar" has not been set
     [echo] ...  property build_bar: ${build_bar}
Property "build_bar" has not been set
Override ignored for property "build_foo"
     [echo] ...  property build_foo: true

generate_bar:
Property "build_bar" has not been set
Property "build_bar" has not been set
Property "build_bar" has not been set
Skipped because property '${build_bar}' not set.
  [antcall] Exiting C:\temp\build.xml.
     [echo] finished.

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

Reply via email to