ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Richardson" <btri...@gmail.com>
Subject Re: Need help calling one build file from another
Date Thu, 22 May 2008 17:38:42 GMT
Hi Carlos,

Thanks for responding.  I was under the impression that the dir value in the
ant element would set the basedir property in the build file being
executed.  Thus, in the Foo build file, I was hoping that ${basedir}/src
would point to Foo's src directory rather than Bar's...

--
Bryan

On Thu, May 22, 2008 at 2:02 AM, Carlos Alonso <calonso@unkasoft.com> wrote:

> 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: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message