I would like to write a Maven plugin that among other things manipulates
(both add/update) the POM model available at MavenProjects.getModel() while
executing Maven phase goals, such as "test" and "site", so that for
instance I can:
1) Add a <reporting/> node along with plugins inside, so that when the
"site" phase runs, those plugins can be used to generate reports
2) On the fly add plugins to <build/>, along with <executions/> for those
plugins, so that they run as part of other phases.
3) Fro plugins that are already in the POM model, update things like
versions, <executions/>.
I already wrote the plugin, and wrote Java code to make the necessary
additions/update to the POM. I've injected MavenProject into my Mojo via
@Parameter(defaultValue = "${project}")
private MavenProject project;
But those additions/changes to the POM Model object are being ignored.
For exaxample,
one use case I have is to tack on <reporting/> with a bunch of plugins
and reports they should generate. I execute my custom logic as part of
the pre-site face (I create a Mojo and configured its goal to run with
pre-site). Then n
in the code of the Mojo I do the additions/updates to the POM. But
when "site" phase runs,
the reports added to the POM not executing.
Am I missing something fundamental about Maven POM? Are modifications
to POM at runtime
not allowed? I suspect this is the reason, but I wanted to confirmed with
more experienced Maven developers.
Thank you, and let me know what other details I can provide to clarify things.
Best,
Jose.