On 13 Apr 07, at 5:10 AM 13 Apr 07, ArneD wrote:
Hi everybody,
from a corporate user's point of view, I believe, the following
points are
important:
1. Corporate users want to be completely decoupled from what's
happening on
repo1.
No they don't. In my experience they have wanted to shield all their
developers from central but generally still have someone who
maintains a connection to central. Whether they mirror its contents
inside their firewall, create internal repositories by running builds
and turning local repos into remote repos for their developers, or
using a proxy. All three are prevalent use cases.
That corporate users want something consistent and reliable is for
certain, but cutting off the network effect that Maven provides is
generally not desirable and defeats one of Maven's greatest virtues
in that new things are immediately available for use. That we have
bugs with the snapshot mechanism and not fully worked out patterns
for versioning of parent POM and plugins just comes with Maven not
being fully mature but don't throw the baby out with the bath water.
Many even don't want to proxy repo1 but instead manage their own
repository. This is especially true for build artifacts (but it is
also
desirable for Maven plugins which currently would be a pain).
2. Many users don't want to make a distinction between Maven itself
and the
Maven core plugins (compile, jar, ...).
This also not true in my experience. Core plugins are not distributed
with Maven because we have consciously decoupled the lifecycle of
plugins from the core because any plugins we house here may, in fact,
be release two or three times between major releases of Maven and
binding these versions in the core would be a bad idea.
Currently, when downloading the
Maven distribution, it is in a way uncomplete as even the core
plugins are
missing.
That is intentional and won't change as the default distribution, but
we certainly could provide another if necessary or better yet provide
decent tooling so that it's very simple to setup Maven + a given
manifest of tools you want for a development team.
In contrast, if you download Ant, for example, you get all core ant
tasks. Yes, it it possible to download other tasks from elsewhere,
but what
you get out-of-the-box contains the most important things. The same
if you
download the Eclipse SDK. It is not just the Eclipse runtime but
instead a
bundle of the runtime and plugins. It is good to be able to use new
plugins
by just declaring them (as long as you have a connection to repo1),
but the
Maven core plugins should be usable out-of-the-box, without a
connection to
repo1.
I don't believe this is what most users want. I believe they would be
more interested in setting up a complete environment for their
developers and bundling is not very help here. Someone has to manage
how developers work behind a firewall and this person is generally
the one who populates an internal repository. Some tooling here would
be far more useful.
3. Many corporate users prefer to wait for stable releases instead
of using
beta versions. When using a stable Maven release, say 2.0.6, you
should get
latest stable (!) versions of Maven plugins. For example, you do
not want to
use maven-assembly-plugin 2.2-beta1 just because it has been
uploaded to
ibiblio. But: You want it out-of-the-box. The last thing that
newbies want
is to be forced to manually find out the latest version numbers and
declare
them.
This is why we are promoting the requirement of specifying versions
in addition to making it easy to find out those versions. Many users
want different versions and we can't accommodate every possibility
but putting this power in the users hands you can do whatever you like.
We had the notion of a plugin registry which was used locally by a
developer but not enforceable team wide. I think this is the feature
people are looking for. Some manifest that can be enforced and used
as a mixin so that we don't have to bake it into Maven yet something
we can provide. But we're always going to get a cross-section of
users who want one thing and not another which is why we generally
decide something and make everyone do it as the overall benefit to
the group is higher. If we baked in versions some would complain
loudly "I have no control over the versions of plugins", or if we
provided an override mechanism some would expect the manifest to win,
or the POM to be dominant.
Again, ultimately what you want is what everyone wants. An easy way
to have an initial setup, yet configurable, and provide rock solid
consistent builds. And that's what we're trying to achieve. Making a
static glob is not the solution.
To adress these issues, may I suggest the following:
- Build Maven distributions that include a super POM that declares the
latest stable(!) version of all core Maven plugins (i.e. the
plugins hosted
on maven.apache.org).
That's not ever going to be baked in.
- Provide a downloadable distribution that is completely
independent of
repo1, i.e. a distribution that contains all Maven core plugins (in
form of
a pre-filled local repository, for example) in the latest stable
version
That's entirely possible, and we could definitely do something like
that if was deemed something of value by users.
Jason.
Regards
- Arne
--
View this message in context: http://www.nabble.com/Remove-auto-
resolution-of-plugin-versions-from-Maven-2.1-
tf3560617s177.html#a9975501
Sent from the Maven Developers mailing list archive at Nabble.com.
---------------------------------------------------------------------
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]