Hello there,
I'm about to download certain dependencies in a local folder (M2 layout).
For example:
== ivy.xml ==
<ivy-module version="2.0">
<info organisation="org.demo" module="demo"/>
<dependencies>
<dependency org="org.springframework" name="spring-context"
rev="4.0.6.RELEASE" />
<dependency org="org.springframework" name="spring-context"
rev="3.2.9.RELEASE" />
</dependencies>
</ivy-module>
$ java -jar ivy-2.3.0.jar -ivy ivy.xml -retrieve
"lib/[orgPath]/[artifact]/[revision]/[artifact]-[revision].[ext]"
This works except that version 4.0.6.RELEASE is favored over 3.2.9.RELEASE.
This is not what I want. I want that Ivy downloads each and every
(transitive) dependency (and also javadoc and source jars if available -
but that's another story).
How can I do this?
According to Ivy's documentation (*), I should be able to plugin a
conflict-manager named "all" [1]. So I gave this settings file a try:
== ivysettings.xml ==
<ivysettings>
<conflict-managers>
<all />
</conflict-managers>
</ivysettings>
This gave me the somewhat unexpected error:
*Exception in thread "main" java.text.ParseException: failed to load
settings from file:settings.xml: no appropriate method found for adding all
on class org.apache.ivy.core.settings.IvySettings*
To see whether I understood the documentation, I tried to get going with
conflict manager "latest-revision". This conflict manager seems to exist.
However, I'm getting now:
*:: org.springframework#spring-context;4.0.6.RELEASE: no resolver found for
org.springframework#spring-context: check your configuration*
Aha, obviously there is no resolver plugged in. In other words, a given
settings file is not merged with the default setting but taken as the
ultimate authority.
Did I miss something or is there a way to "merge" a settings file? What do
do now? Pull the ivysettings.xml out of the jar and override it?
Why do I need to put a conflict-manager into settings.xml at all? Why not
putting it into ivymodule.xml where it would override the default that
comes from settings.xml?
Honestly, I don't why there is a need for such a settings file. Why not
having a singular ivy.xml?
[1] http://ant.apache.org/ivy/history/2.3.0/settings/conflict-managers.html
(*) Sorry, but this documentation is close to useless.
--
Wolfgang Häfelinger