Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
3.6.0, 3.6.1, 3.6.3
-
None
-
None
Description
TLDR if you exclude a module using !module or -module with -pl that module needs to somehow be in the resolved reactor.
We have custom build scripts (e.g. shells scripts or makes) that will make a certain subset of the project using -pl. However some modules we want to always exclude. (Yes we could use profiles but the maintenance of that solution is unacceptable to us).
Thus if we do something like this:
mvn install -pl "snaphop-cache,-snaphop-http" -amd
We may or not may not get the following depending on whether snaphop-cache has a downstream dependency on snaphop-http:
[INFO] Scanning for projects... [ERROR] [ERROR] Could not find the selected project in the reactor: snaphop-http @ [ERROR] Could not find the selected project in the reactor: snaphop-http -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MavenExecutionException
Thus it becomes nontrivial to exclude a module. One has to know whether or not snaphop-cache will trigger snaphop-http to be in the reactor.
Furthermore the command may fail if some one changes dependencies (not project structure or modules).
I find that to be alarming. -pl shouldn't fail if dependencies change.
Its notable that the following is completely fine:
mvn install -pl "snaphop-cache,snaphop-http" -amd
Which is confusing and inconsistent that one can't then add -.
My recommendation is if -pl can't find the exclusion module in the currently selected reactor is just ignores it or perhaps issues a warning.