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

Reply via email to