Sadly, right now, it seems broke =(

https://issues.apache.org/jira/browse/IVY-1228

To go ahead and give one anecdote, our dependency graphs are *very* complicated. We have two kinds of builds, "official" builds built by our continuous build (and continuous release) process, and local developer builds to "test before committing".

Because our continuous release is releasing all the time, a local build fails because each module does its own resolve, which will resolve different dependencies (since the dependencies are in a constant state of flux). If, however, latest-compatible was in use, then the correct version should be used (because previously built modules would mean a transitive dependency on 1.0 which would lock us into 1.0, even though 1.1 has been released since the start of the build).

Our usecase is probably atypical, very few people have dependency graphs as complex as ours, but it is a data point for you. We use strict dependency checking in our continuous build (and wherever possible) but we really need latest-compatible for our local builds for the above reasons.

-Carl

On 09/23/2010 09:49 AM, Mitch Gitman wrote:
Please forgive the tangent. Here's what the documentation has to say about
"latest-compatible":
this conflict manager selects the latest version in the conflicts which can
result in a compatible set of dependencies. This means that in the end this
conflict manager does not allow any conflict (like the strict conflict
manager), except that it follows a best effort strategy to try to find a set
of compatible modules (according to the version constraints)

http://ant.apache.org/ivy/history/latest-milestone/settings/conflict-managers.html

Can anyone out there articulate precisely what that means?

--
Carl Myers
Palantir Technologies | Internal Tools Software Engineer
[email protected]

Reply via email to