On Dec 16, 2006, at 6:08 AM, Jason van Zyl wrote:
I think that the mvn build we have no is already fairly hard for
folks to comprehend and would probably fall apart unless someone
like me was here to answer everyones questions and monitor changes
to keep things in check. I think that is no different than if we
were using Ant.
I think you under estimate what other people know about Maven in
that they can apply their knowledge of the infrastructure from
other projects here provided you're following standard conventions.
And it's complicated because you're fighting a losing battle with
too many SNAPSHOTs. Even if the snapshot artifact resolution was
perfect you would still have these problems. You are getting bitten
by some severe technical problems in Maven, no doubt, but you are
exacerbating the situation by using the "SNAPSHOT" identifier
everywhere which inherently means "a shifting pile of sand" to
Maven. Start moving to eliminate them and your instabilities will
lessen tremendously.
Why the heck are you going off on SNAPSHOTS? The mail I send
initially was talking about versioning of a project's modules... and
some pitfalls with remote repositories... and you basically turned
that into SNAPSHOT this and SNAPSHOT that...
I actually think that Ant + a few tasks to manage limited remote
dep inclusion + groovy scripting would be a very powerful
combination and would be at least half as complicated as our Maven
build.
That's what people always say, but I have first hand experience
with many large companies with large builds and they are moving
away from their homebrew systems because they are sinking projects.
If you used Maven in a way you describe above you would have
stability i.e. no snapshots. If you're going to script something
then create a plugin to walk your dependencies and replace the
"SNAPSHOT" markers with real timestamps and you will have
stability. You are so much closer to having something working all
the time then you think.
Again with the SNAPSHOT muck... its more about the entire remote repo
handling than it is about SNAPSHOTS. Even if a project did not use
any SNAPSHOTS, then same basic problems with remote repos exist...
they are not part of the direct audit trail of the project, its quite
easy for anyone to change any artifact which could completely fuck
your build over, with out you even knowing about it.
If you take the remote repository out of the mix, then this can't
happen... since all of your inputs must be local, and probably in
your source control repo, you have a changelog, you can see when
someone changes an artifact and with a build automation system setup
you can see when those changes break things. Your build is also not
at the mercy of your network connectivity... and thus less likely to
freak out when a network hickup occurs, less likely to waste your
time building 80% of a project just to have it die on a missing
dependency due to a repo being blacklisted. This is my point...
nothing at all to do with using SNAPSHOTS or not.
Ant does not force a remote repo on to its projects, and IMO that is
a huge plus over Maven. Maven still has its plugins and reactor
going for it though. I still like Maven... I just want to have
complete control over how and when it uses its remoteness to pull in
stuff that will affect my builds. And more so I want to be able to
disable its default remoteness (central) and hardcode my projects to
use a svn-based repo implementation that will always have the right
versions of my dependencies.
I still think remote repos suck... but, maybe you guys will
eventually find a better solution to that.
I don't think they suck, I think you're just getting bitten
severely by the erratic snapshot handling and overuse of snapshots.
We will eventually get the repository under control as it's clear
now they have become a mission critical resource for many people,
we understand that and it will be fixed. There's going to be a lot
of bitching when we actually turn on the gauntlet. Any release, for
example which contains a "SNAPSHOT" identifier anywhere in the
graph will simply be rejected.
No... as explained above... its much, much, much more than the
limited SNAPSHOT context which you seem to be stuck in.
--jason