How large is your codebase that you are looking to use incremental
compilation. Most java compilers are pretty fast and re-compiling 1000
classes doesn't take very long (couple seconds).
The issue is that the tool that determines if a class needs to be re-
compiled must fully understand the structure of all the other classes
in the compilation unit. This generally means parsing the source or
the bytecode. This requires almost as much work as compiling the
entire codebase again.
On the flip side, most IDEs keep a graph of dependencies that they are
constantly rebuilding as you work. Making this same sort of thing work
for Ant calling javac would mean writing out a file somewhere that
stored the graph and loading it up before the build runs. The trick is
to keep that graph up to date. What it would probably mean is that you
probably end up spending more time rebuilding the graph and then
compiling during a build.
Unless you could hook into the graph that the IDE creates, you'll
probably better off just re-compiling the code base.
-bp
On Mar 21, 2009, at 7:52 AM, Sven Köhler wrote:
Hi,
according to the docs it seems, that ant is (still) not suitable for
incremental compilation. Is that true?
Quote from the docs of the depend task:
********************************************************************
The most obvious example of these limitations is that the task can't
tell which classes to recompile when a constant primitive data type
exported by other classes is changed. For example, a change in the
definition of something like
public final class Constants {
public final static boolean DEBUG=false;
}
will not be picked up by other classes.
********************************************************************
Yes, the good constant-inlining. So there is really nothing
implemented to detect that? That is: if I don't do an "ant clean"
once in a while, then i will have inconsistent class files?
I'm rather amazed. But the trouble seems to be, that modern javac
doesn't generate any dependency information in addition to or inside
the class files. Is that right?
Regards,
Sven
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org