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

 

Reply via email to