Howdy, all.

I note that the task for javac says:

"If you include part of your package-structure inside the srcdir-attribute 
(or nested src-elements) Ant will start to recompile your sources every 
time you call it."

This is exactly what ANT is doing to me at the moment, and I cannot figure 
out how to rewrite my build.xml file to make it work.

My directory structure for this is:

-org
--metagraph
---lib
---app
----experiment

My build.xml file is in foo/org/metagraph/app/experiment.  Up at the top, I 
define <property name="src" value="."/>

I want to compile all of the files in experiment, using various libs in 
lib.  The following javac task does it, but as the documentation warns, it 
recompiles everything each time.

   <target name="compile-debug-old" depends="depend">
     <!-- Compile the java code from ${src} into ${build} -->
     <javac
       srcdir="${src}"
       destdir="${build-debug}"
       classpath="${utilclasspath}"
     />
   </target>

I tried changing it to:

   <target name="compile-debug" depends="depend">
     <!-- Compile the java code from ${src} into ${build} -->
     <javac
       srcdir="${src}/test"
       includes="org/metagraph/app/import/**"
       destdir="${build-debug}"
       classpath="${utilclasspath}"
     />
   </target>

where test is a directory with nothing in it, but then it did not recompile 
anything.

I must be missing something basic here.  For various reasons, the build.xml 
file has to be in org.metagraph.app.experiment, and the build must be run 
from there, but this should not be an insolvable problem, right?

The complete file which rebuilds the world, as the documentation warns, is 
attached below.

<project name="experiment" default="dist" basedir=".">

   <!-- set global properties for this build -->
   <property name="basemgdir" value="../../../.."/>
   <property name="src" value="."/>
   <property name="build" value="build"/>
   <property name="build-debug" value="build/debug"/>
   <property name="depcache-debug" value="${build}/debug-depcache"/>
   <property name="build-release" value="build/release"/>
   <property name="depcache-release" value="${build}/release-depcache"/>
   <property name="libdir" value="${basemgdir}/org/metagraph/lib"/>
   <property name="utilclasspath" 
value="${libdir}/metagraph.jar:${libdir}/mysql.jar:${libdir}/log4j.jar:${libdir}/xerces.jar:${libdir}/jdom.jar"/>
   <property name="dist"  value="dist"/>
   <!-- property name="build.compiler" value="jikes"/ -->

   <target name="init">
     <!-- Create the time stamp -->
     <tstamp/>
     <!-- Create the build directory structure used by compile -->
     <mkdir dir="${build-debug}"/>
     <mkdir dir="${depcache-debug}"/>
     <mkdir dir="${build-release}"/>
     <mkdir dir="${depcache-release}"/>
     <!-- Create the dist structure used for results -->
     <mkdir dir="${dist}"/>
   </target>

   <target name="depend" depends="init">
     <depend srcdir="${src}"
       destdir="${build-debug}"
       cache="${depcache-debug}"
       closure="yes"
     />

     <depend srcdir="${src}"
       destdir="${build-release}"
       cache="${depcache-release}"
       closure="yes"
     />
   </target>

   <target name="compile-debug" depends="depend">
     <!-- Compile the java code from ${src} into ${build} -->
     <javac
       debug="on"
       optimize="off"
       srcdir="${src}"
       destdir="${build-debug}"
       classpath="${utilclasspath}"
     />
   </target>

   <target name="compile-release" depends="depend">
     <!-- Compile the java code from ${src} into ${build} -->
     <javac
       debug="off"
       optimize="on"
       srcdir="${src}"
       destdir="${build-release}"
       
classpath="${libdir}/metagraph.jar:${libdir}/mysql.jar:${libdir}/log4j.jar:${libdir}/xerces.jar:${libdir}/jdom.jar"
     />
   </target>

   <target name="dist-debug" depends="compile-debug">
     <!-- Put everything in ${build-debug} into the 
expImport-${DSTAMP}-debug.jar file -->
     <jar
       jarfile="${dist}/expImport-${DSTAMP}-debug.jar"
       basedir="${build-debug}"
       compress="false"
     />
   </target>

   <target name="dist-release" depends="compile-release">
     <!-- Put everything in ${build-release} into the 
expImport-${DSTAMP}.jar file -->
     <jar
       jarfile="${dist}/expImport-${DSTAMP}.jar"
       basedir="${build-release}"
       compress="true"
     />
   </target>

   <target name="dist" depends="dist-debug,dist-release">
   </target>

   <target name="clean">
     <!-- Delete the ${build} and ${dist} directory trees -->
     <delete dir="${build}"/>
     <delete dir="${dist}"/>
   </target>
</project>

Scott
Scott Ellsworth
[EMAIL PROTECTED]

Reply via email to