On 12 December 2011 14:26, Robert Watkins <[email protected]> wrote:
> Indeed, the functionality is a subset of the support for version ranges, > as documented at > http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution#DependencyMediationandConflictResolution-DependencyVersionRanges > > (It's the 'hard requirement' syntax) > > This isn't just a Maven feature - Ivy has the same functionality with a > different syntax - > http://ant.apache.org/ivy/history/trunk/settings/version-matchers.html It > just so happens that for this particular area, the syntax is the same. > Well as far as I know, ivy doesn't support the concept of "hard" version requirements. So ivy might support the [1.0] syntax, but I don't think it will behave the way maven does. (I'm not certain, because in Ivy the responsibility for ejecting versions is smeared between the DependencyResolver implementations and the Ivy ResolveEngine. So it may depend on the DependencyResolvers you have configured.) > Maven's "soft requirements" never conflict - the highest one wins, similar > to Gradle. Version ranges restrict the set of valid matches, thus setting > up the possibility for conflict. So in the example of one dependency with a > range of [1.0, 2.0], and another dependency with a 'soft range' of 3.0, > then you end up using version 2.0. However, if the second dependency was > [2.1, 3.0], then you get a conflict and the build fails. (Ivy works the > same way) > > So version ranges are always "hard requirements"? It's not particularly clear from the linked docs. Thanks for the feedback. We'll certainly look at supporting the idea of a "hard" dependency requirement. Daz
