maven/plugin-inheritance-and-prof...

65 lines
2.9 KiB
Plaintext
Raw Normal View History

marching orders:
===========================
[X] 1. Add concept of inherit=(true|false) for plugins at plugin/goal levels
[X] 2. Add is|setInheritedByDefault methods to MojoDescriptor to support setting
the default inheritance behavior per mojo.
[X] 3. Add annotation for @inheritedByDefault (true|false).
[ ] 4. Change plugin inheritance to be enabled, cumulatively
-> Not sure how best to do this.
It cannot happen in the MavenProjectBuilder, since no plugins have
been resolved at this point, and we cannot know what the default
inheritance semantics are for a particular plugin.
If this happens at the DefaultLifecycleExecutor, we've dragged the
Profiles assembly and injection out of the assembly code and into the
build-execution code (that is, out of maven-project and into
maven-core). This has implications for people using maven-project
outside of m2 itself.
-> Possibly we need to move plugin verification outside of the lifecycle
executor to a post-MavenProjectBuilder phase, which would also
take place before injection of Profile values. This is complicated, as
it would leave maven-project in an incomplete state (plugin
inheritance wouldn't be part of the basic MavenProjectBuilder, since
the plugin manager is part of maven-core). Since Profiles must be
applied after inheritance is finished, it also means that Profiles
cannot be applied as part of the maven-project API as accessed
through the MavenProjectBuilder
-> Alternately, we could inherit all plugins, but only APPLY/EXECUTE the
ones where inherit=true...that would keep the phases of the build
process essentially unchanged, but could result in quite a bit of
useless overhead as we calculate/inject plugin configurations which
will not be inherited/used. The problem here is knowing which ones
actually were inherited and should have the inherit=true test
applied, and which ones are supplying inherit=true|false but were
specified at this level.
[ ] 5. Add profiles, defined in POM, ${basedir}/profiles.xml, and settings.xml
-> Different validation rules for allowed elements in each, to maintain
portability.
-> Info in profiles will be applied AFTER all assembly, but BEFORE cli
values (what cli values are we using??)
-> Profiles can be ordered
* settings.xml:
<activeProfiles><profileId/><profileId/></activeProfiles>
* profiles.xml:
<profiles><profile><id/>..</profile><profile/></profiles>
* pom.xml: {see profiles.xml}
[ ] 6. Add --show-profiles execution mode for maven, storage of
profiles-in-effect in MavenSession for later access?