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.