ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Carlos Alonso <calo...@unkasoft.com>
Subject Re: Need help calling one build file from another
Date Thu, 22 May 2008 08:02:10 GMT
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
View raw message