You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by Steve Peterson <st...@virtation.com> on 2000/04/27 17:34:23 UTC
Classic command line on NT
My configuration: Ant of 4/18/00 2:53 PM (most recent .tar.gz), on NT 4 SP
6 with JDK1.2.2.
I'm having an issue with the destination directory for .class files in Ant
builds. My goal is to have the .class file live in the same directory as
the .java file.
In my build.xml I say
<javac
srcdir="${src.java.dir}/com/databottling/fountain/core"
destdir="${src.java.dir}/com/databottling/fountain/core"
includes="Constants.java"
debug="${debug}"
/>
where <property name="src.java.dir" value="src"/>
If there is a Constants.class in the destdir, javac will overwrite that
with the newly created .class. If there isn't, javac creates a
com/databottling/fountain/core/Constants.class inside destdir, which isn't
what I want.
The javac command line being generated is
Using classic compiler
Compilation args: [-d,
C:\user\work\databottling\fountain\src\com\databottling\fountain\core,
-classpath,
C:\user\work\databottling\fountain\src\com\databottling\fountain\core;C:\JRu
n\jre\lib\ext\QTJava.zip;C:\b\jdk1.2.2\lib\tools.jar;C:\user\java\jakarta-an
t\lib\ant.jar;C:\user\java\jakarta-ant\lib\xml.jar;C:\user\java\jakarta-tomc
at-3.1\lib\servlet.jar;C:\user\java\jakarta-tomcat-3.1\lib\webserver.jar;C:\
user\java\xerces-1_0_3\tools\xerces-1.0.1.jar;C:\user\java\jgl3.1.0\lib\jgl3
.1.0.jar;C:\user\java\ecs-1.2\bin\ecs-1.2.jar;C:\user\java\castor-0.8\castor
-0.8.jar;C:\user\work\databottling\fountain\src, -sourcepath,
C:\user\work\databottling\fountain\src\com\databottling\fountain\core, -g]
Files to be compiled:
C:\user\work\databottling\fountain\src\com\databottling\fountain\core\C
C:\user\work\databottling\fountain\src\com\databottling\fountain\core\Consta
nts.java
Trying this out at the command line, it looks like if the -d option is left
off then javac will put the Constants.class file in the same directory as
the source.
I made a patch to javac.java to suppress -d in the case where srcdir and
destdir are the same place, but I'm an Ant newbie and am looking for any
guidance available.
Steve Peterson
--- src\org\apache\tools\ant\taskdefs\javac.java Tue Apr 18 14:53:08 2000
+++ src\main\org\apache\tools\ant\taskdefs\javac.java Thu Apr 27 10:11:24 2000
@@ -355,17 +355,21 @@
if (deprecation == true)
argList.addElement("-deprecation");
- argList.addElement("-d");
- argList.addElement(destDir.getAbsolutePath());
+ String destPath = destDir.getAbsolutePath();
+ String srcPath = srcDir.getAbsolutePath();
+ if (!destPath.equals(srcPath)) {
+ argList.addElement("-d");
+ argList.addElement(destPath);
+ }
argList.addElement("-classpath");
// Just add "sourcepath" to classpath ( for JDK1.1 )
if (Project.getJavaVersion().startsWith("1.1")) {
argList.addElement(classpath + File.pathSeparator +
- srcDir.getAbsolutePath());
+ srcPath);
} else {
argList.addElement(classpath);
argList.addElement("-sourcepath");
- argList.addElement(srcDir.getAbsolutePath());
+ argList.addElement(srcPath);
if (target != null) {
argList.addElement("-target");
argList.addElement(target);
--
Steve Peterson +1 952 948 9729
Principal Consultant FAX +1 612 677 3050
Virtation Technologies, Inc. http://virtation.com