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 Maurer Philipp <ph...@rheinmetall-ad.com> on 2011/01/03 15:27:52 UTC
Conflict Manager / Latest Strategy
Hello Folks,
I'd like to realize the following resolve strategy:
Master project A:
A -> D "1.0-build2"
A -> C "2.3"
A -> B "1.0"
B 1.0:
B -> D "[1.0,"
B -> C "[2.2,"
C and D depend on nothing.
When I resolve A, I expect: B 1.0, C 2.3, D 1.0build2.
"Rules":
- Get exactly the versions defined in the master project. If they
conflict with any direct or indirect dependency exit with error.
- 1.0-build2 is higher than 1.0 or 0.0.2 (and is lower than e.g.
1.0-build3 etc)
The story:
I started with the latest-compatible conflict manager and the default
latest strategy (latest-revision). Result: Ivy crashes since D
1.0-build2 and D [1.0, is unresolvable in this configuration - bad.
Then I tried the latest-compatible conflict manager and the lates-lexico
latest strategy. Result: Ivy resolves D 1.0build2 and D [1.0, to
D1.0-build2 which is exactly what I want, but has some unacceptable
secondary effects:
If there is also an e.g. C 2.4 available, Ivy resolves to that instead
of C 2.3 as defined in the master project.
Any ideas ?
PS: I already read that "2.3" in a master project is interpreted as "2.3
or compatible i.e. higher" but this is not the behaviour I would like to
have. Plus, in the setting latest-compatible/latest-revision it works
well but does not support
1.0 < 1.0-build2 :-(
Re: Conflict Manager / Latest Strategy
Posted by Archie Cobbs <ar...@dellroad.org>.
Try adding force="true" to all of the <dependency> tags in the "A"
project... We use this as a workaround for this
bug<https://issues.apache.org/jira/browse/IVY-1233>in the
latest-compatible conflict manager.
-Archie
On Thu, Jan 6, 2011 at 12:23 AM, Maurer Philipp <
philipp.maurer@rheinmetall-ad.com> wrote:
> Should be possible, but I see this as the last way to solve the problem.
>
> Before that, I would like to ensure that Ivy is not capable to that out of
> the box; I haven't found anything - maybe there is no possibility to that
> with build-in resolvers or I'm just to stupid to find it.
>
> -----Ursprüngliche Nachricht-----
> Von: Maarten Coene [mailto:maarten_coene@yahoo.com]
> Gesendet: Donnerstag, 6. Januar 2011 00:03
> An: ivy-user@ant.apache.org
> Betreff: Re: Conflict Manager / Latest Strategy
>
> I'm not sure, but maybe you can accomplish this by writing your own
> ConflictManager?
>
> Maarten
>
>
>
>
> ----- Original Message ----
> From: Maurer Philipp <ph...@rheinmetall-ad.com>
> To: ivy-user@ant.apache.org
> Sent: Mon, January 3, 2011 3:27:52 PM
> Subject: Conflict Manager / Latest Strategy
>
> Hello Folks,
>
>
>
> I'd like to realize the following resolve strategy:
>
>
>
> Master project A:
>
> A -> D "1.0-build2"
>
> A -> C "2.3"
>
> A -> B "1.0"
>
>
>
> B 1.0:
>
> B -> D "[1.0,"
>
> B -> C "[2.2,"
>
>
>
> C and D depend on nothing.
>
>
>
> When I resolve A, I expect: B 1.0, C 2.3, D 1.0build2.
>
> "Rules":
>
> - Get exactly the versions defined in the master project. If they
> conflict with any direct or indirect dependency exit with error.
>
> - 1.0-build2 is higher than 1.0 or 0.0.2 (and is lower than e.g.
> 1.0-build3 etc)
>
>
>
> The story:
>
> I started with the latest-compatible conflict manager and the default
> latest strategy (latest-revision). Result: Ivy crashes since D
> 1.0-build2 and D [1.0, is unresolvable in this configuration - bad.
>
> Then I tried the latest-compatible conflict manager and the lates-lexico
> latest strategy. Result: Ivy resolves D 1.0build2 and D [1.0, to
> D1.0-build2 which is exactly what I want, but has some unacceptable
> secondary effects:
>
> If there is also an e.g. C 2.4 available, Ivy resolves to that instead
> of C 2.3 as defined in the master project.
>
>
>
> Any ideas ?
>
>
>
> PS: I already read that "2.3" in a master project is interpreted as "2.3
> or compatible i.e. higher" but this is not the behaviour I would like to
> have. Plus, in the setting latest-compatible/latest-revision it works
> well but does not support
>
> 1.0 < 1.0-build2 :-(
>
>
>
>
>
--
Archie L. Cobbs
AW: Conflict Manager / Latest Strategy
Posted by Maurer Philipp <ph...@rheinmetall-ad.com>.
Should be possible, but I see this as the last way to solve the problem.
Before that, I would like to ensure that Ivy is not capable to that out of the box; I haven't found anything - maybe there is no possibility to that with build-in resolvers or I'm just to stupid to find it.
-----Ursprüngliche Nachricht-----
Von: Maarten Coene [mailto:maarten_coene@yahoo.com]
Gesendet: Donnerstag, 6. Januar 2011 00:03
An: ivy-user@ant.apache.org
Betreff: Re: Conflict Manager / Latest Strategy
I'm not sure, but maybe you can accomplish this by writing your own
ConflictManager?
Maarten
----- Original Message ----
From: Maurer Philipp <ph...@rheinmetall-ad.com>
To: ivy-user@ant.apache.org
Sent: Mon, January 3, 2011 3:27:52 PM
Subject: Conflict Manager / Latest Strategy
Hello Folks,
I'd like to realize the following resolve strategy:
Master project A:
A -> D "1.0-build2"
A -> C "2.3"
A -> B "1.0"
B 1.0:
B -> D "[1.0,"
B -> C "[2.2,"
C and D depend on nothing.
When I resolve A, I expect: B 1.0, C 2.3, D 1.0build2.
"Rules":
- Get exactly the versions defined in the master project. If they
conflict with any direct or indirect dependency exit with error.
- 1.0-build2 is higher than 1.0 or 0.0.2 (and is lower than e.g.
1.0-build3 etc)
The story:
I started with the latest-compatible conflict manager and the default
latest strategy (latest-revision). Result: Ivy crashes since D
1.0-build2 and D [1.0, is unresolvable in this configuration - bad.
Then I tried the latest-compatible conflict manager and the lates-lexico
latest strategy. Result: Ivy resolves D 1.0build2 and D [1.0, to
D1.0-build2 which is exactly what I want, but has some unacceptable
secondary effects:
If there is also an e.g. C 2.4 available, Ivy resolves to that instead
of C 2.3 as defined in the master project.
Any ideas ?
PS: I already read that "2.3" in a master project is interpreted as "2.3
or compatible i.e. higher" but this is not the behaviour I would like to
have. Plus, in the setting latest-compatible/latest-revision it works
well but does not support
1.0 < 1.0-build2 :-(
Re: Conflict Manager / Latest Strategy
Posted by Maarten Coene <ma...@yahoo.com>.
I'm not sure, but maybe you can accomplish this by writing your own
ConflictManager?
Maarten
----- Original Message ----
From: Maurer Philipp <ph...@rheinmetall-ad.com>
To: ivy-user@ant.apache.org
Sent: Mon, January 3, 2011 3:27:52 PM
Subject: Conflict Manager / Latest Strategy
Hello Folks,
I'd like to realize the following resolve strategy:
Master project A:
A -> D "1.0-build2"
A -> C "2.3"
A -> B "1.0"
B 1.0:
B -> D "[1.0,"
B -> C "[2.2,"
C and D depend on nothing.
When I resolve A, I expect: B 1.0, C 2.3, D 1.0build2.
"Rules":
- Get exactly the versions defined in the master project. If they
conflict with any direct or indirect dependency exit with error.
- 1.0-build2 is higher than 1.0 or 0.0.2 (and is lower than e.g.
1.0-build3 etc)
The story:
I started with the latest-compatible conflict manager and the default
latest strategy (latest-revision). Result: Ivy crashes since D
1.0-build2 and D [1.0, is unresolvable in this configuration - bad.
Then I tried the latest-compatible conflict manager and the lates-lexico
latest strategy. Result: Ivy resolves D 1.0build2 and D [1.0, to
D1.0-build2 which is exactly what I want, but has some unacceptable
secondary effects:
If there is also an e.g. C 2.4 available, Ivy resolves to that instead
of C 2.3 as defined in the master project.
Any ideas ?
PS: I already read that "2.3" in a master project is interpreted as "2.3
or compatible i.e. higher" but this is not the behaviour I would like to
have. Plus, in the setting latest-compatible/latest-revision it works
well but does not support
1.0 < 1.0-build2 :-(