Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

More New Cool Features in Maven 3 - Parallel Builds

DZone's Guide to

More New Cool Features in Maven 3 - Parallel Builds

· Java Zone
Free Resource

Try Okta to add social login, MFA, and OpenID Connect support to your Java app in minutes. Create a free developer account today and never build auth again.

One of the big focuses of Maven 3 is to provide a more reliable, more stable and better performing build tool. And one big area of improvement is Performance.

Maven 3 has the (new and somewhat experimental) ability to analyze your project structure, and the dependencies between your modules, to figure out which modules can be built in parallel. This has major performance implications for larger multi-module projects - the documentation reports typical speed increases of 20-50%.

To configure your modules to be built in parallel, you need to tell Maven how many threads you want to work with. The following command will run Maven using 4 threads:

mvn -T 4 clean install

Or you can get Maven to calculate how many threads to run, based on the number of available CPU cores. In this example, Maven will run up to 2 threads per core in parallel.

mvn -T 2C clean install

The biggest speed increase comes from tests. Of course, not all tests can be run in parallel - if two modules both start up a web server on the same port, for example, you will get yourself into trouble. Speed increases will also depend on how your tests are distributed through your modules - if all the slow ones are together in one module, for example, speed increases are likely to be limited. In this case, you might want to also try running your unit tests in parallel.

From http://weblogs.java.net/blog/johnsmart/archive/2010/09/07/more-new-cool-features-maven-3-parallel-builds

Build and launch faster with Okta’s user management API. Register today for the free forever developer edition!

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}