I caught wind of a release of Ivy today, that lists among its new features a new repository for project metadata.
Given that they are already using the Maven-developed repository for artifacts at Ibiblio, this struck me as pretty strange. Constructing metadata for over 7000 artifacts by hand is not something I’d want to take on, especially when most of it already exists in the Maven repository. And especially when you are just taking that metadata from the same source.
Let’s compare an example:
(the XSL is actually a nice touch to make it browsable).
Now, the Maven descriptor can describe everything the Ivy one does except for who wrote the ivy descriptor (which doesn’t seem all that useful other than for some really basic auditing if it were to be automated). There is a limitation in the POM that some data exists (license) in a super POM not published – but that problem is going to be addressed in the next Maven release, and could certainly be worked around when the metadata is published.
We also have metadata for projects like Hibernate that are not built using Maven – it is a requirement of upload to ibiblio.
The main difference seems to be the listing of the location of repositories that house the artifact. This seems a bit short sighted… do you add a new repository entry to every descriptor in the repository every time you add a mirror?
As a Maven developer, I would have liked to see the Ivy developers approach the Maven project about this and offer to help beef up our metadata, and use it rather than creating a whole new repository.
As a user, I’d prefer to get access to new dependencies as soon as they are released or uploaded, rather than having to submit two different requests (one to ibiblio and one to ivyrep).
Update: Note that I’m not saying anything about Ivy or Maven’s ability to do transitive dependencies – I’m aware that Ivy is doing this and the current release of Maven is not. However there is no reason – that I can see – that Ivy cannot use the existing metadata to implement that feature.