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.