You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by wolfgang häfelinger <wh...@gmail.com> on 2014/07/08 20:26:19 UTC

conflict-managers

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

Re: conflict-managers

Posted by wolfgang häfelinger <wh...@gmail.com>.
"force = 'true'" worked also for me.

Nevertheless, Ivy demonstrates very nicely that even excellent software is
nothing without proper documentation.



On Tue, Jul 8, 2014 at 8:41 PM, Archie Cobbs <ar...@dellroad.org> wrote:

> Try using <dependency force="true" .... > .. this works for me.
>
> -Archie
>
>
> On Tue, Jul 8, 2014 at 1:26 PM, wolfgang häfelinger <
> whaefelinger@gmail.com>
> wrote:
>
> > 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
> >
>
>
>
> --
> Archie L. Cobbs
>



-- 
Wolfgang Häfelinger

Re: conflict-managers

Posted by Archie Cobbs <ar...@dellroad.org>.
Try using <dependency force="true" .... > .. this works for me.

-Archie


On Tue, Jul 8, 2014 at 1:26 PM, wolfgang häfelinger <wh...@gmail.com>
wrote:

> 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
>



-- 
Archie L. Cobbs