Maven: how to do parallel builds?
The suggested solutions are great, but I wanted to add something to the answers here regarding the test stability during parallel builds.
So, when Maven parallel build is used:
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
Some issues with tests can appear. Note any behavior in tests which is different between serial and parallel test execution. Most of the times it happens do to improper test isolation resource-wise.
For example, test1
manipulate db entry with key 12345
, which is hard-coded and test2
uses the same entry! It can't be good…
It's a situation that should be considered in the first place, but sometime it's forgotten and could lead to different problems once the switch to parallel maven build is made.
In case that happens, and you still want to use the parallel execution at least in some of the occasions, you can (of course, besides trying to fix the test and make them properly isolated) to disable Maven test runs using -DskipTests
argument:
mvn clean install -T 4 -DskipTests
Maven 3 (as of beta 1) now supports parallel builds as an experimental feature.
For example,
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
Full documentation can be found on the Maven wiki: Parallel builds in Maven 3 - Apache Maven - Apache Software Foundation.