Improving the Maven Repository
Brett Porter provides a few steps on how you can help improve the Maven repository. My advice? Convert your project to use Maven 2 as an experiment. That's what I did with Equinox 1.5. In the process I found 28 issues with POMs at ibiblio. If you're using Ant, you can use Maven 2's Ant Tasks to download your dependencies w/o going "whole hog" and converting everything to M2.
Yes, this is a somewhat twisted attempt to convince you to endure the same pain I went through. The best and worst part of Maven 2 is its transitive dependencies. If they can all be updated to be accurate by the project owner's - the problem will be solved. But how do you convince project owner's to do that? I wonder how good Ivy's metadata is?
Why is this whole debate important to you? Because Ant 1.7 is (supposedly) going to have a dependency download mechanism. It's likely you'll use it because it is a nice convenience. Steve Loughran is one of Ant's primary developers and he has this to say:
I do find the m2 tasks and repository hard to work with, and am debating a quick investigation of Ivy. Maybe focusing on one thing -library management- has let them do a better job than trying to be all of a next generation build tool.
The "best dependency downloading tool" debate is heating up. I wonder which one will win Ant Developers over? If it's M2, I can see the Apache folks smiling. However, if it's Ivy - at least we'll know it's not a political decision. It's because it simply does a better job. May the best tool win.
NOTE: I've yet to try Ivy, and don't know if I will. Especially now that I've fixed all the POMs I use at ibiblio.
For Ivy, I can repeat what I commented on Steve's site: "As for Ivy, focusing on library management does make them strong in that suit, and we've had discussions with them in the past. They still very much rely on the existence of the Maven repository to function.
"Maven is still with [Ivy] feature for feature, and I found similar usability problems using Ivy when I had to build WebWork. I'd be interested to hear your experiences with it. As far as the repo goes - they have very few transitive dependencies centralised (about 40), so they obviously work well if you can find what you need, because they are hand crafted, but I'm not sure that it scales to large numbers of artifacts, or letting projects do it themselves."
I'd add that one area Ivy probably helps right now is that they utilise configurations to give you multiple views over a dependency's dependencies. This gives you more flexibility, but I'm unconvinced this would scale to a larger number of projects.
We can actually achieve the same thing with Maven profiles, but to this point we haven't taken advantage of it. I think we can make that a bit easier to do in the 2.1 release to ease that particular pain point.
Posted by Brett Porter on January 06, 2006 at 03:42 AM MST #
Posted by Eduardo Rocha on January 06, 2006 at 05:04 AM MST #
No, it won't. Steve started to implement one but realized the Maven 2 tasks where at least half way where he wanted to go. He decided to stop his efforts and focus on improving the existing solutions.
So over in Ant land we collectively decided against implementing yet another dependency download mechanism but instead encourage our users to give the Maven2 tasks, Ivy or any of the other alternatives a try (dpml.net's Depot for example).
Posted by Stefan Bodewig on January 06, 2006 at 10:19 AM MST #
Posted by Matt Raible on January 06, 2006 at 02:12 PM MST #
Posted by Aaron Longwell on January 06, 2006 at 06:05 PM MST #
Posted by Jason Carreira on January 06, 2006 at 07:06 PM MST #
Posted by Patrick Lightbody on January 07, 2006 at 01:32 AM MST #
Posted by Srgjan Srepfler on January 07, 2006 at 02:40 AM MST #
Posted by Andrej on January 08, 2006 at 09:17 AM MST #