I use a desktop with eight cores to build a Java application using Ant (through a javac target). Is there a way to speed up the compilation by using more than one thread or process?
I know I can run several Ant tasks in parallel, but I don't think this can be applied to a single compilation target, or does it?
Not as far as I know. The Eclipse compiler has some work done to speed up using multiple cores but it does not buy as much as you probably would like it to.
Question is, can you live with incremental compilation for development, and only recompile those that changed? The full rebuild can then be left to the build server.
I don't know of any way to do tell ant itself to make effective use of multiple cores. But you can tell ant to use the Eclipse Compiler, which has support for multithreaded compilation built-in.
You can use Buck Build to increase your build speed and utilize multiple cores.
In a nutshell:
The documentation seems to indicate that it's unlikely to work correctly with
javac
.As long as the javac you are calling doesn't use all the cores it doesn't really matter what you say in Ant. You can use the
compiler
attribute to define which java compiler should be used for the task.If you have several build targets you can use
fork=yes
to execute the target(s) externally.http://ant.apache.org/manual/Tasks/javac.html#compilervalues