On 31 Jul 2011, at 13:15, Mark Struberg wrote:

> I thought about that too, and actually don't think that there is a general 
> solution.
> 
> Two examples:
> 
> * JDBC-4.1 Driver and DataSource interfaces in OpenJDK-1.7 got a new 
> getParentLogger() method. To compile your own DataSource with java7 you need 
> to implement this method. It is perfectly compatible to get executed on java5 
> and 6 too, so what you need is the latest version of the dependency 
> (JDBC-4.1) while compiling your project. If you get invoked as a callback or 
> similar, it's a good idea to implement the widest possible range.
> 
> * The story turns around if you act as a client invoking other libs. If 
> interfaces you use in your projects got extended with new methods in a new 
> version, then this will obviously not work together with older lib versions 
> once you made use of the new methods. In this case you should restrict 
> yourself to the subset of methods available in all versions of the lib.  

FYI, those are the two classic provider vs consumer scenarios:

   http://www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf

> Plus, there are lots of grey tones between those 2 scenarios. E.g. if some 
> method parameter or config tag expresses version and capability...
> 
> LieGrue,
> strub
> 
> PS: you can at least check the backward compat of your own lib with the 
> maven-clirr-plugin.
> 
> --- On Sun, 7/31/11, Jason van Zyl <ja...@sonatype.com> wrote:
> 
>> From: Jason van Zyl <ja...@sonatype.com>
>> Subject: Re: Pluggable Dependency Resolution
>> To: "Maven Developers List" <dev@maven.apache.org>
>> Date: Sunday, July 31, 2011, 11:58 AM
>> What if you could find another way to
>> check API compatibility, would you need this at all?
>> 
>> On Jul 31, 2011, at 6:03 AM, Mark Derricutt wrote:
>> 
>>> The use case that we originally came with in our
>> discussions revolved around version ranges, and the fact
>> that a version reference of "2.5.4" doesn't actually mean "
>> give me 2.5.4" but rather "I would like 2.5.4, but meh, use
>> something higher if you need to".
>>> 
>>> In the case were you have artifacts using say
>> [1.0.0,2.0.0) and [1.5.0,3.0.0) as their ranges, maven will
>> favor the highests higher bound, so if 1.5.1, 1.6.0, 2.0.1,
>> and 2.5.0 are available, maven will choose 1.6.0 to compile
>> against.
>>> 
>>> What we were discussing was that ideally you'd to
>> compile against the lowest lower bound ( 1.5.1 ), this way
>> you'd get fail fast on any changed APIs that you
>> inadvertently started to use, alerting you to the fact that
>> you need to increment the lower bound of your range.
>>> 
>>> If you require bug fixes in a newer release which is
>> triggering your tests to fail, then you should also be
>> incrementing the lower bound.
>>> 
>>> The whole purpose of this flow is to drive you to
>> releasing often, and working off binary dependencies rather
>> than long standing -SNAPSHOTs.  This flow would seem to
>> work best for places who are releasing artifacts every 2-3
>> days, and working in a continuous delivery style process -
>> it probably wouldn't work for Apache projects which often
>> seem to favor long drawn out cycles ( I recall a thread
>> awhile ago about not wanting to release a plugin cause it
>> only had one bug fix in it ). 
>>> 
>>> 
>>> Having read the other comments I realize my initial
>> idea is a little crazy, and as Jason pointed out in the
>> first response, probably more trouble than its worth.
>>> 
>>> Mark
>>> 
>>> 
>>> 
>>> 
>>> On 31/07/2011, at 9:41 PM, Hervé BOUTEMY wrote:
>>> 
>>>> Do you have practical examples that either are not
>> supported, or the actual 
>>>> ordering is the contrary than you expected?
>>> 
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
> 


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

Reply via email to