Mastering Maven: Exclude Modules From Build
When we are working with a multi-module project in Maven we might want to exclude a module when we invoke a build command. We might only be interested in partially building some modules. We can use the command line option -pl
or --projects
to specify a list of modules that need to be in our build. But we can also use !
followed by the module name to exclude modules from our build.
In the following example we have multi-module project with 4 modules: root
with name parent-project
, core
, service
and webapp
:
$ pwd
parent-project
$ tree -L 1
.
├── core
├── pom.xml
├── service
└── webapp
$
First we run verify
for the complete project and we see in the output that the reactor build order contains all modules:
$ mvn verify
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] parent-project [pom]
[INFO] core [jar]
[INFO] service [jar]
[INFO] webapp [war]
[INFO]
...
$
Suppose we want to exclude our webapp
module than we use $ mvn -pl '!webapp' verify
. In the output we see the reactor build order doesn’t include our webapp
module:
$ mvn verify -pl '!webapp'
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] parent-project [pom]
[INFO] core [jar]
[INFO] service [jar]
[INFO]
...
$
As our list of modules is not so big in this sample project we could also have used the option -pl
to only specify the modules we want to build separated by a comma. We must use .
to indicate our root module:
$ mvn verify -pl '.,core,service'
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] parent-project [pom]
[INFO] core [jar]
[INFO] service [jar]
[INFO]
...
$
Written with Maven 3.8.6.