« Return to Thread: rebuilds even if source not changed

Re: <javac> rebuilds even if source not changed

by Steve Loughran :: Rate this Message:

Reply to Author | View in Thread

Jean-Rene David wrote:

> Hello,
>
> When 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>
> </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 the source file hasn't
> changed.
>
> 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

you must move the class under the package name it is in. Without that
not only does ant not do any dependency checking (is it expected to
remember where every .class file comes from?) and sun's javac compiler
wont build files in the correct order.
--
Steve Loughran                  http://www.1060.org/blogxter/publish/5
Author: Ant in Action           http://antbook.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...

 « Return to Thread: rebuilds even if source not changed