On 5/17/05, Dominique Devienne <[EMAIL PROTECTED]> wrote:
> I've used a more lenient model for my transitive dependency. The exact
> version used to build something is recorded, but which version of a
> given dependency to use is left up to the client. 

This is pretty much what is in Maven (and the artifact tasks) at the
moment. It uses the "nearest" definition for conflict resolution. So
declaring in the POM of the current project can ensure a particular
version, otherwise you'll get one at depth 1, etc.

> A colleage proposed an interesting idea of using predicates to state
> compatibility between components the different version of a component.

What we have is pretty basic, and we're definitely looking to improve
it with some other types of resolution, such as what you've described.
Ideally, a project would declare the minimum version it needs to work
(and if applicable, maximum - or perhaps even known incompatible
versions in between). The final project should use the most recent
version allowed by all of the definitions (on the assumption that the
most recent is backwards compatible and has less bugs than earlier
versions :)

Again, local definition of an explicit version will ensure you get
what you ask for.

This also has important consequences for making builds reproducible in
the future, too - obviously if the version remains flexible at the
point it is published then it might not be the same later on. There
needs to be a point during QA where you can lock it down to a version.

if you'd like to track the feature, http://jira.codehaus.org/browse/MNG-303

Cheers,
Brett

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to