Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-7033

Excluded projects through -pl should not need to be in the reactor

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 3.6.0, 3.6.1, 3.6.3
    • None
    • Command Line
    • 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.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            agentgt Adam Gent

            Dates

              Created:
              Updated:

              Slack

                Issue deployment