Yep,
It is a bug.
Can be done with two files:
part2.xml
<project name="part2">
<target name="usage"/>
<property name="dir.src" value="src" />
</project>
part3.xml
<project name="part3">
<import file="part2.xml" />
<echo> dir.src is ${dir.src} </echo>
</project>
Dir.src is not set.
Swapping the <property> and <target> in part2.xml gives the correct result.
Peter
Stefan Bodewig wrote:
On Thu, 30 Sep 2004, Frode E. Moe <[EMAIL PROTECTED]> wrote:
I am currently experiencing some weirdness when using multiple
levels of imported build files.
It is an ordering problem, as can be witnessed by looking into Ant's
-debug output.
Running "ant -f part3.xml -debug" you get
...
Importing file part2.xml from /tmp/part3.xml
parsing buildfile /tmp/part2.xml with URI = file:///tmp/part2.xml
Setting ro project property: ant.file.part2 -> /tmp/part2.xml
+Target: usage
Property ${dir.src} has not been set
Setting project property: dir.srcphp -> ${dir.src}/php
Property ${dir.src} has not been set
[echo]
[echo] dir.src is ${dir.src}
[echo] dir.srcphp is ${dir.src}/php
[echo]
Importing file part1.xml from /tmp/part2.xml
parsing buildfile /tmp/part1.xml with URI = file:///tmp/part1.xml
Setting ro project property: ant.file.part1 -> /tmp/part1.xml
+Target: release
Setting project property: dir.src -> src
...
so Ant performs the import of part2.xml and then continues with the
top level tasks of part3.xml before going back to the top level tasks
of part2.xml. The <property> in part2.xml doesn't get executed until
after your <property> in part3.xml.
When you remove the target from part2.xml it becomes
...
Importing file part2.xml from /tmp/part3.xml
parsing buildfile /tmp/part2.xml with URI = file:///tmp/part2.xml
Setting ro project property: ant.file.part2 -> /tmp/part2.xml
Importing file part1.xml from /tmp/part2.xml
parsing buildfile /tmp/part1.xml with URI = file:///tmp/part1.xml
Setting ro project property: ant.file.part1 -> /tmp/part1.xml
+Target: release
Setting project property: dir.src -> src
Setting project property: dir.srcphp -> src/php
...
so if there are no targets in part2, all its top level tasks get
executed immediately - if there are targets those top level tasks get
delayed until after the outer most build file has been done.
Smells like a bug, I'm opening a bug report in bugzilla.
Stefan
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]