maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: [DISCUSS] Version Comparison Edge Case
Date Wed, 23 Sep 2009 06:49:59 GMT
If you want to "fix all things Maven" then "provides" and "requires"  
needs to be added. Version checking by itself is never going to get it  
right.

<dependency>
   <groupId>org.apache.commons</groupId>
    <artifactId>lang</artfiactId>
    <required>lang-api-3.0</required>
</dependency>
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-core</artifactId>
   <required>beans-2.0,aop-2.5</required>
</dependency>

Now if I specify in a dependency management somewhere that I want  
spring 3.0.0.M4 and if that version only "provides" beans-2.5 and  
beans-3.0 then an error will be generated during the build instead of  
finding out at run time that the combinations of jars won't work  
together.

Ralph

On Sep 22, 2009, at 7:34 PM, Paul Benedict wrote:

> I vote for option #2. Maven 3 should fix all things Maven; and if we  
> need to
> introduce backwards compatibility flags to help mitigate those  
> problems, I
> would do that too.
>
> Paul
>
> On Tue, Sep 22, 2009 at 9:26 PM, Brett Porter <brett@apache.org>  
> wrote:
>
>>
>> On 16/09/2009, at 8:18 PM, Benjamin Bentmann wrote:
>>
>> Ignoring for the moment that neither "3.0-!" nor "3.0.0.!" are
>>> OSGi-conformant versions, the OSGi version ordering also implies
>>>
>>> 3.0 == 3.0.0 < 3.0.0.20090915-152839-2 < 3.0.0.GA < 3.0.0.SNAPSHOT
>>>
>>> So I'm not sure how much we can borrow from OSGi for Maven.
>>>
>>
>> IIUC, The code that Hervé pointed to now has a number of  
>> workarounds so
>> that OSGi works in most of its current uses, and Maven versions  
>> work in most
>> of its current uses - but it doesn't conform to the spec of either.  
>> ie,
>> alpha, beta, rc, cr, milestone and snapshot are all before the  
>> release, the
>> rest after. I think this would have been a good idea if we'd done  
>> it to
>> start with, but I'm sure there are weird versions out there that  
>> might cause
>> confusion (only mediated by the fact that people don't use ranges  
>> all that
>> often).
>>
>> I think there are 3 options here:
>> - keep adding more special cases in the version comparer for things  
>> like !
>> - declare a break in compat (this may result in having to make  
>> repository
>> changes to preserve functionality though in a mixed environment)
>> - restore the Maven 2 behaviour and make each place a range is used
>> configurable so that OSGi can be used as an alternatives - for  
>> example -
>> osgi:[x.y.z.q,) vs mvn:[x.y.z,)
>>
>> Cheers,
>> Brett
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Mime
View raw message