2007/5/3, Brett Porter <[EMAIL PROTECTED]>:
Any other thoughts on this proposal, given that we replace the
packaging plugin concept with a descriptor instead?

Do that mean anything for the archetypes? i use maven-plugin
packaging to have the group metadata for the archetypes.

Raphaël



- Brett

On 21/04/2007, at 10:57 PM, Brett Porter wrote:

> Hi,
>
> I thought to gather up that massive thread I've just read, I could
> throw out a quick proposal that might summarise it and serve as a
> discussion point.
>
> Things we know:
> - the current situation is problematic
> - we can't require versions for everything (particularly, the
> implied plugins from the lifecycle - too much burden on the users)
> - we can't put the versions in the maven installation (the POM must
> be the definitive reference for how to build the software, changing
> maven installations should have no effect - except for fixing bugs
> and adding features some builds might require)
>
> Side note:
> - we *could* use the super POM. I don't think it's ideal in this
> case (since you'd have to increment the model version too often to
> keep up with the plugin releases), but it should be noted that the
> super POM *is not* tied to the Maven version. If it changes, it
> should be tied to the modelVersion.
>
> The discussion also touched on the following, which I think are
> separate issues:
> - locking down versions at release time where they were not
> specified (a more general problem, as it includes not only RELEASE/
> LATEST, but ranges too).
> - separation of "declaration" from "instantiation" for a POM.
>
> So, here's what I propose:
> - require the version in plugin definitions in the POM from
> modelVersion 4.1.0+ (for 4.0.0 modelVersions, continue to allow the
> RELEASE as the version).
> - externalise all packagings/lifecycle definitions (with the
> exception of 'pom', perhaps)
> - make the user declare the plugin that contains the packaging they
> want, including it's version (a plugin may contain more than one
> packaging)
> - make the packaging plugin declare the versions of the other
> lifecycle plugins it uses (in the lifecycle itself, not the plugins
> pom)
> - same for any overlaid lifecycles in plugins
> - declared plugins and pluginManagement in the POM always wins over
> the lifecycle.
> - running from the CLI behaves as it does now
>
> Now, while this could mean the jar packaging is in maven-jar-
> plugin, etc. I would suggest that's too many plugins to change when
> the compile plugin changes. So instead we could have the maven-java-
> packages-plugin, v1.0 that has jar, war, ear, ejb, compile,
> surefire, etc. all pinned to a known, tested set. If a user needs
> one of them newer: plugin management.
>
> This does mean that the java packaging plugin gets released more
> often - perhaps even a function of all the other releases. It may
> be a good idea for us to be able to make that plugin's build
> somehow a part of the release of the other plugins, perhaps by
> making it driven by repository metadata (ie, it might not be a real
> plugin, but a virtual one, but still with a deterministic version
> to version mapping). We could start off without this and just
> roadmap the plugin like the others, however.
>
> We should note that this does not tightly couple plugins in the
> same way it has before which was problematic in m1. We are still
> "programming to interfaces" - but the metadata wires up the right
> versions of things. There is nothing in the plugin's pom tying it
> to another plugin.
>
> This solution is:
> - deterministic
> - easy to understand
> - still as flexible as now for the user
> - only a minimum imposition (5-9 lines) on a user
> - only a minimum imposition on the developer/release process (the
> java packaging plugin)
>
> Thoughts?
>
> Cheers,
> Brett
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to