On 28 Mar 07, at 7:46 PM 28 Mar 07, Brett Porter wrote:
Hi,
I didn't want to pin the assembly plugin vote to this, but it
seemed like a good opportunity to bring this up.
I'd like to propose we split the stable repository from the
unstable repository (which would be where alphas, betas and rcs get
deployed), and make this a documented best practice.
I don't see the value in this at all. A release is already from
distinguished, and to add another layer of meaning to this adds more
complexity and will be a source of great confusion.
This would not be a concept change in Maven (at least, yet - it
could be something to consider in the versioning in future): it's
simply two types of release repositories. The stable one would be
included in Maven by default, the unstable/pre-release one would
not. You'd have to add the repository to your project.
-1
It's already complicated enough and I think we should, in fact, go
the other way and put a default SNAPSHOT repository in the process by
default so that thousands of people don't have diddle POMs all the time.
The anti pattern we have now when switching to a snapshot is having
to add the snapshot repository definition. When you move to a release
if you wanted to be accurate you would remove the snapshot repository
entry. If you're lazy, like most people, then you just leave the
definition in there anyway. So some of the time the list of
repositories is accurate, sometimes not. We should just put the
snapshot repository in by default and find better ways of
distinguishing the use of snapshots or various levels of quality with
metadata. We're already making this harder for users and adding
another layer to this would be crazy. People would have to go look in
different repositories and have to define yet another repository
entry, that's just so inconvenient.
I would suggest this for future additions to central, but leave
anything currently there in place for backwards compat.
Having separate repositories is fine for manageability but having to
diddle POMs all the time is very annoying especially for day-to-day
use. I think anyone experiencing the pain of this would not want
this. Case in point is building trunk and building and deploying a
snapshot locally and deploying it and then a build not working
because I didn't put in a snapshot repository. It's an asymmetry that
really makes no sense and is a great source of irritation and often
leads to builds that don't work out of the box because of this
asymmetry.
I think this is a good all round concept, but there is a particular
practical problem that we should do this for: unpinned plugin
versions. In the specific example of the assembly plugin - if you
don't request a version (ie, use latest release), or you said
[2.1,), then you'll get the 2.2-beta-1 release which is presumably
less stable than 2.1. The same rationalisation would apply to
ranges used in any dependency, but thats the biggest use case I can
think of that affects people today. It would allow us to do more
regular test releases of the plugins.
Thoughts?
I think this is a not a good idea. We should make this easier for
users not harder. And for plugins in 2.1 we should make people
specify versions and again restore symmetry in the use
pluginManagement like dependencyManagement as well as turning off any
automatic updates. Many things were not working as a result of
magically finding the last release, the plugin registry being the
biggest culprit but users can specify versions for plugins as they
very accustom to this and the same management techniques can be used.
Anyone who wants a reliable build is doing this already.
I'm far more in favor of hosting a default snapshot repository on
central and forcing plugin versions in 2.1. This creates far more
stability and puts the onus on us to make finding that version for
first time use easy. Not specifying a version for a plugin is not
predictable as clearly shown with the last release of the surefire.
If I had to specify surefire 2.2 then trunk would not have broken, or
the 2.0.x branch. I think we should be striving for ease of use and
stability.
So in summary, more default repositories definitions not more types
of repositories. Put a default snapshot repository on central, find
some reasonable eviction policy and make day-to-day use easier. Also
make the specification of the plugin version to bring that into
common pattern that is the same for dependencies.
Jason.
- 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]