ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Pontarelli <>
Subject Re: incremental compilation
Date Mon, 23 Mar 2009 17:29:22 GMT
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.


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:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message