Well Bryan, I think that the problem here relies on the <antcall> target, you are invoking a target that belongs to other ant file, but the basedir and further properties belongs to the Bar ant file.To avoid this problem, follow the next example:

Substitute both your <ant> and <antcall> tasks with something like this:
<ant
           antfile="path/to/build.xml"
           dir="basedir for the execution"
           target="target to be executed"
inheritall="whether you want your invoked build to inherit all the declared properties at this point or not"
>
<!-- Here you can give the invoked target properties as arguments -->
            <property name="name" value="value" />
           <property name="runtime" value="${env.name}"/>
           <property name="nameenvironment" value="${env.name}"/>
</ant>

Search the ant manual for further information or more detailed information about this task.

Regards.
Carlos

Bryan Richardson escribió:
Hello all,

I'm having trouble calling one build file from another.  I'm using Eclipse,
and I have two projects:

Foo
Bar

Each project has a build.xml file, and the Bar project depends on a jar file
generated by the Foo project.  The following is the build.xml file for
project Foo:

<project name="Foo" basedir=".">
    <description>Build file for Foo project.</description>

    <property name="src.dir"      location="${basedir}/src"           />
    <property name="build.dir"    location="${basedir}/build"         />
    <property name="class.dir"    location="${basedir}/build/classes" />
    <property name="dist.dir"     location="${basedir}/dist"          />
    <property name="dist.src.dir" location="${basedir}/dist/src"      />
    <property name="lib.dir"      location="${basedir}/lib"           />

    <path id="dependency.path">
        <fileset dir="${lib.dir}" includes="**/*.jar" />
    </path>

    <target name="init" depends="clean">
        <mkdir dir="${class.dir}"    />
        <mkdir dir="${dist.src.dir}" />
    </target>

    <target name="clean">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}"  />
    </target>

    <target name="compile" depends="init">
        <javac destdir="${class.dir}" classpathref="dependency.path"
debug="on">
            <src path="${src.dir}" />
        </javac>
    </target>

    <target name="archive" depends="compile">
        <jar destfile="${dist.dir}/foo.jar" basedir="${class.dir}" />
    </target>
</project>

The following is the build.xml file for project Bar:

<project name="Bar" basedir=".">
    <description>Build file for Bar project.</description>

    <property name="src.dir"      location="${basedir}/src"           />
    <property name="build.dir"    location="${basedir}/build"         />
    <property name="class.dir"    location="${basedir}/build/classes" />
    <property name="dist.dir"     location="${basedir}/dist"          />
    <property name="dist.src.dir" location="${basedir}/dist/src"      />
    <property name="lib.dir"      location="${basedir}/lib"           />

    <path id="dependency.path">
        <fileset dir="${lib.dir}" includes="**/*.jar" />
    </path>

    <target name="init" depends="clean">
        <mkdir dir="${class.dir}"    />
        <mkdir dir="${dist.src.dir}" />
    </target>

    <target name="clean">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}"  />
    </target>

    <target name="archive-all">
        <ant dir="../Foo"     target="archive" />

        <antcall target="archive" />
    </target>

    <target name="compile" depends="init">
        <copy file="../Foo/dist/foo.jar" todir="lib" />
        <javac destdir="${class.dir}" classpathref="dependency.path"
debug="on">
            <src path="${src.dir}" />
        </javac>
    </target>

    <target name="archive" depends="compile">
        <jar destfile="${dist.dir}/bar.jar" basedir="${class.dir}" >
            <manifest>
                <attribute name="Class-Path" value="lib/foo.jar" />
            </manifest>
        </jar>
    </target>
</project>

The problem occurs when the Bar project's build.xml calls the Foo project's
build.xml file in the archive-all target.  I get an error in the Foo
project's build.xml file in the compile target.  When I run the Bar
project's build.xml file through Eclipse's debugger with a break point at
the javac element in the Foo project's build.xml file, I notice that all of
the properties in the Foo project's build.xml file are referencing the Bar
project's path... I checked the basedir property for the Foo project's
build.xml file to make sure it was being overrided with the dir attribute of
the ant element in the Bar project's build.xml file and it is.  However,
when I look at the properties defined in the Foo project's build.xml file in
the debugger (src.dir, etc) I notice that they are referencing directories
in the Bar project and not the Foo project ("${basedir}/src" for example
doesn't seem to be working).

After all that, can anyone tell me what I'm doing wrong?  Let me know if I
need to clarify anything... :)

--
Thanks!
Bryan



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to