Hi All,
I have a complex dependency graph in which all dependencies are resolved dynamically (using
Version Range Matcher - revConstraint="[1.1,2.0[" for example). I have a use case in which
I need to override the revision of a particular transitive dependency from the root of my
graph, without having to introduce a dependence on that transitive dependency in my root node.
I'm hoping to use Ivy to drive SOA integration; that is, I'll be versioning web services,
not binary artefacts at all!
My understanding of the documentation is that using the <override> element in my root
node's <dependencies> element will achieve this:
http://ant.apache.org/ivy/history/latest-milestone/ivyfile/override.html
I'm puzzled however, by the results of my experiments with this. If I make the value of "rev"
outside what is permitted by the "revConstraint" on that dependency, I get the following message:
[ivy:resolve] dependency descriptor has been mediated: dependency: com.nokia#MyDependency;1.1
{*=[*]} => dependency: com.nokia# MyDependency;0.9 {*=[*]}
While this sounds like it's doing the job, the resulting report shows that this mediation
has not occurred at all. If I set the "rev" in the <override> to a value that sits inside
the "revConstraint", my desired use case, the above log message does not appear, and the report
also shows that the override has been ignored.
Are <override> elements ignored for dynamic resolution? If so, does anybody know a way
of achieving this given I have no conflicts?
Kind regards,
James
p.s. BTW - I love the pretty pictures I get from the Report that show our service dependency
graphs.
|