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: * profiles.xml: .. * pom.xml: {see profiles.xml} [ ] 6. Add --show-profiles execution mode for maven, storage of profiles-in-effect in MavenSession for later access?