Maven
  1. Maven
  2. MNG-4081

Subtle case: Avoid resolving artifacts from outside the reactor for plugins and extensions whose projects are inside the reactor

    Details

    • Type: Improvement Improvement
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Duplicate
    • Affects Version/s: 2.1.0-M1
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Complexity:
      Intermediate
    • Number of attachments :
      0

      Description

      DefaultLifecycleExecutor.constructLifecycleMappings() can trigger the resolution of all the plugins declared in the project's build section. When this happens, even if those plugins are in the current reactor, that version will not be used. Instead, since those plugin artifacts haven't been built yet, the plugin will be resolved externally and bound into the plugin collector for later use. This means that even if the plugin itself isn't used until after it's build in the reactor, that version won't be used.

      I'm still investigating exactly how build extensions will interact with the reactor, but I suspect they cannot be available from the current reactor either, since build extensions are loaded up front and for the entire reactor at once. I'll post an update once I've explored that section of the code.

        Issue Links

          Activity

          Hide
          John Casey added a comment -

          Looking at DefaultExtensionManager.addExtension(..), extensions aren't even looked for in the current reactor. I suppose this makes sense, given how early extensions are added to the build runtime.

          Show
          John Casey added a comment - Looking at DefaultExtensionManager.addExtension(..), extensions aren't even looked for in the current reactor. I suppose this makes sense, given how early extensions are added to the build runtime.
          Hide
          John Casey added a comment -

          This issue is a spin-off from MNG-4075, since it attempts to address the deeper issue of what to do with plugins and extensions that cannot be resolved from within the reactor at the point where they're first resolved...even if they may be available when they're first used.

          Show
          John Casey added a comment - This issue is a spin-off from MNG-4075 , since it attempts to address the deeper issue of what to do with plugins and extensions that cannot be resolved from within the reactor at the point where they're first resolved...even if they may be available when they're first used .
          Hide
          Brett Porter added a comment -

          for review under 3.0-alpha. Would be good to have a test case.

          Show
          Brett Porter added a comment - for review under 3.0-alpha. Would be good to have a test case.
          Hide
          Benjamin Bentmann added a comment -

          For plugins, we can employ the reactor output (MNG-2135) and for extensions, we need an update to the model as outlined in another issue (MNG-1911).

          Show
          Benjamin Bentmann added a comment - For plugins, we can employ the reactor output ( MNG-2135 ) and for extensions, we need an update to the model as outlined in another issue ( MNG-1911 ).

            People

            • Assignee:
              Benjamin Bentmann
              Reporter:
              John Casey
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: