Hello,
If a class is in a package, the <javac> target
always rebuilds it even if the source hasn't
changed. Here's a test case:
$ ant -version
Apache Ant version 1.7.0 compiled on December 13 2006
$ ls
build.xml
Welcome.java
$ cat Welcome.java
package My.Class;
public class Welcome
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
$ cat build.xml
<?xml version="1.0"?>
<project name="test" default="build" basedir=".">
<target name="build">
<mkdir dir="foo" />
<javac srcdir="." destdir="foo" />
</target>
<target name="clean">
<delete dir="foo" />
</target>
</project>
$ ant
Buildfile: build.xml
build:
[mkdir] Created dir: /tmp/testcase/foo
[javac] Compiling 1 source file to /tmp/testcase/foo
BUILD SUCCESSFUL
Total time: 1 second
Now I just run it again:
$ ant
Buildfile: build.xml
build:
[javac] Compiling 1 source file to /tmp/testcase/foo
BUILD SUCCESSFUL
Total time: 0 seconds
And it recompiles but shouldn't.
My class is part of the My.Class package, so javac
put it in: foo/My/Class:
$ find
.
./Welcome.java
./build.xml
./foo
./foo/My
./foo/My/Class
./foo/My/Class/Welcome.class
But the <javac> task doesn't recurse the hierarchy
to find the class file. It only looks in the
"destdir" itself. So if I just:
$ touch foo/Welcome.class
Then <javac> doesn't rebuild the file:
$ ant
Buildfile: build.xml
build:
BUILD SUCCESSFUL
Total time: 0 seconds
What idiom am I missing?
Thanks for any input,
--
JR
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]