Skip to Content.
Sympa Menu

xom-interest - Re: [XOM-interest] Xom and Jaxen dependency

xom-interest AT lists.ibiblio.org

Subject: XOM API for Processing XML with Java

List archive

Chronological Thread  
  • From: "Steve Loughran" <steve.loughran AT gmail.com>
  • To: "Adam Constabaris" <adamc AT unc.edu>
  • Cc: xom-interest <xom-interest AT lists.ibiblio.org>
  • Subject: Re: [XOM-interest] Xom and Jaxen dependency
  • Date: Wed, 15 Nov 2006 20:42:39 +0000

On 15/11/06, Adam Constabaris <adamc AT unc.edu> wrote:

If you explicitly declare a later version of a dependency in the POM
you're using for a local build, then that will be what's pulled in. For
the record, Maven does have a facility for declaring "version X or
later" in a dependency (e.g. "[2.4)" for "version 2.4 or later"),
although I'm not clear on how well it works.

http://docs.codehaus.org/display/MAVENUSER/Improving+Maven2+Dependency+Resolution

I wrote a long reply to this, but gmail logged me out and lost the draft.

Here's a quick summary

-you cannot update POM files in public artifacts. The repository team
dont like it, and as the maven and ivy clients cache md forever, the
old stuff stays around to make builds on different systems
inconsistent.

-you cannot predict in advance which unreleased versions will be
compatible, so cannot declare it in your POM before the things ship.

-there's no way for an artifact to declare that they are 100%
backwards compatible, as in some cases it will be false.


I'm not sure I'd want my build tool to automatically pull in the latest
version of a dependency found in the repository: you never know when an
"upgrade" will break something.

OTOH, the automatic approach might work if the metadata in the
repository contained info about which updates are backward compatible.


You could have some MD on the side that declared compatibities and
incompabibilities

compatible(artifact(xom,1,1),art(jaxen,1.3)).
incompatible(artifact(myapp,1,1),art(jaxen,1.3)).

this could be fed into the main metadata and be used to uprate version
information to give the latest version that is broadly compatible.
Hmmm.

For the curious I'm writing a paper and some prolog code to analyze
the repository and make some suggestions. It really is a microcosm of
the semantic web, though one where problems can be fixed by having
some code to refuse to list artifacts whose metadata is blatantly
broken. We have the maven files turned into RDF triples, and are
thinking of doing the same for every class in the JARS, to catch
libraries with other people's classes embedded inside.

-steve




Archive powered by MHonArc 2.6.24.

Top of Page