I am having difficulty getting ant 1.5.1 to look in the correct directories for source and put classes and jars in the right place.
I work in a large IT shop and this is the latest version of ant that we have, so please don't tell me to upgrade to 1.6.2. I would take months. I suspect this is not an ant defect, but user ignorance. If its ignorance, what am I doing wrong? To find out what is going wrong I wrote a build file to show me what ant thought the directories were. The output makes no sense to me. The build file was: <?xml version="1.0" encoding="UTF-8"?> <project name="CaseLaw_Dockets" default="showdirs" basedir="."> <description> Experiment to try to figure out how ant handles directories. </description> <property name="source.dir" value="${user.dir}../source" /> <!-- user.dir is a default property defined by ant --> <property name="build.dir" value="${user.dir}" /> <property name="classes.dir" value="${build.dir}/classes" /> <property name="lib.dir" value="${build.dir}/lib" /> <target name="showdirs" > <dirname property="base" file="$basedir}" /> <echo>base = ${base}</echo> <dirname property="pwd" file="." /> <echo>pwd = ${pwd}</echo> <echo>user.dir = ${user.dir}</echo> <dirname property="sourceDir" file="${source.dir}"/> <echo>source.dir = ${sourceDir}</echo> <dirname property="buildDir" file="${build.dir}"/> <echo>build.dir = ${buildDir}</echo> <dirname property="classesDir" file="${classes.dir}"/> <echo>classes.dir = ${classesDir}</echo> <dirname property="libDir" file="${lib.dir}"/> <echo>lib.dir = ${libDir}</echo> <echo/> </target> </project> I set up a test directory structure as follows: D:\Local\AntExps\directoryExp build directoryExp.xml source com hello HelloWorld.java I ran ant using this build file as follows and got the output as shown (meaning the current working directory was D:\Local\AntExps\directoryExp\build when I ran ant). I used the standard ant.bat that comes with the 1.5.1 distribution. D:\Local\AntExps\directoryExp\build>\apache\ant\bin\ant -verbose -f directoryExp.xml Apache Ant version 1.5.1 compiled on October 2 2002 Buildfile: directoryExp.xml Detected Java version: 1.4 in: C:\j2sdk1.4.2_02\jre Detected OS: Windows XP parsing buildfile directoryExp.xml with URI = file:D:/Local/AntExps/directoryExp/build/directoryExp.xml Project base dir set to: D:\Local\AntExps\directoryExp\build Build sequence for target `showdirs' is [showdirs] Complete build sequence is [showdirs] showdirs: [echo] base = D:\Local\AntExps\directoryExp\build [echo] pwd = D:\Local\AntExps\directoryExp [echo] user.dir = D:\Local\AntExps\directoryExp\build [echo] source.dir = D:\Local\AntExps\directoryExp\build.. [echo] build.dir = D:\Local\AntExps\directoryExp [echo] classes.dir = D:\Local\AntExps\directoryExp\build [echo] lib.dir = D:\Local\AntExps\directoryExp\build BUILD SUCCESSFUL Total time: 0 seconds Here's my problem with this output 1. The value of the "basedir" attribute of <project> was D:\Local\AntExps\directoryExp\build. The value of ${user.dir} was D:\Local\AntExps\directoryExp\build. So how can the value of ${pwd} be D:\Local\AntExps\directoryExp which is one level up from the directory where I ran ant? 2. ${source.dir} was supposed to be ${user.dir}../source, which should have evaluated to D:\Local\AntExps\directoryExp\source, but instead it evaluated to D:\Local\AntExps\directoryExp\build.. (note the two trailing dots). Why? 3. ${build.dir} was supposed to be the same as ${user.dir} and evaluate to D:\Local\AntExps\directoryExp\build, but instead evaluated to D:\Local\AntExps\directoryExp which is one level up from ${user.dir} in the directory hierarchy. How can this happen? 4. ${lib.dir} was supposed to evaluate to D:\Local\AntExps\directoryExp\build\lib, but instead evaluated to D:\Local\AntExps\directoryExp\build, why? None of this makes any sense to me. Can anyone explain what is going on? Thanks, Donald Holliday (719) 481-7501 V (800) 743-7393 x 7501 V [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> The Eight Fallacies of Distributed Computing By Peter Deutsch Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning experiences. 1. The network is reliable 2. Latency is zero 3. Bandwidth is infinite 4. The network is secure 5. Topology doesn't change 6. There is one administrator 7. Transport cost is zero 8. The network is homogeneous