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