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