When <import> is given the same path twice, it skips
the second import. However, if <import> is given a path to the original
(top-level) build-file, it does not consider it a duplicate import, and imports
it (again) ... unless ant is invoked as “ant –f /full/path/to/build.xml”
- then import does recognize that the file has already been imported.
I would expect that import should not (ever) import the
top-level build file again.
Is this a bug? I can submit a bug report and try to
fix it.
Why import the top-level file? In a (parent, subproject1,
subproject2, subproject3) setup, my parent project imports the subprojects and
the subprojects import the parents – subprojects do not import each other.
When the parent is built, the top-level project imports subproject A, and subproject
A imports the parent. The import of the parent is not suppressed because
the top-level build was not invoked with a full-path to the build file, and
confusion ensues.
Example:
$ cat build.xml
<project name="test">
<echo
message="test-top" />
<import
file="./build.xml" />
<echo
message="test-bottom" />
</project>
$ ant
Buildfile: build.xml
[echo] test-top
[echo] test-top
[echo] test-bottom
[echo] test-bottom
BUILD SUCCESSFUL
Total time: 0 seconds
$ ant -f $PWD/build.xml
Buildfile: /a/vallon/tmp/tmp.20080128/build.xml
[echo] test-top
[echo] test-bottom
BUILD SUCCESSFUL
Total time: 0 seconds
$ ant -version
Apache Ant version 1.7.0 compiled on December 13 2006
-Justin
office 8-383-6725, 212-272-6725; cell 917-861-6042