Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Major
-
Resolution: Duplicate
-
Affects Version/s: 2.1.0-M1
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
-
Complexity:Intermediate
-
Number of attachments :
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.
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.