2008/12/8 Ian Robertson <[EMAIL PROTECTED]>:
> On Wed, 2008-12-03 at 23:38 -0700, Barrie Treloar wrote:
>> On Thu, Dec 4, 2008 at 11:06 AM, Ian Robertson <[EMAIL PROTECTED]> wrote:
>> > I would propose that the semantics change to "Of the overlapping ranges, 
>> > the *lowest* soft requirement is the version to be used."  Consequently, 
>> > new releases of a project would not change builds of other projects 
>> > depending on it (assuming that version numbers increase instead of 
>> > decrease with each release). This would negatively impact those projects 
>> > wanting to live on the "bleeding edge", but benefit projects wanting 
>> > repeatable builds.  In practice, range syntax does not appear to have 
>> > gained much traction to date, so this change would hopefully not have 
>> > substantial impact in terms of backwards incompatibility.  Moreover, 
>> > providing semantics which do not introduce instability might increase 
>> > adoption of the syntax.
>>
>> I think the short answer is, if you want repeatable builds then don't
>> use range syntax.
>> By defining a range you are saying that everything that fits in this
>> range is a valid choice.
>> Even those in the future that have yet to be release, as long as they
>> fit in the range.
>> Given that these future versions dont exist they haven't been tested
>> so using a range can be dangerous.
> 
> You raise a good point - open-ended version ranges leave one vulnerable
> to backwards-incompatible library upgrades.  But the current strategy of
> taking the highest version introduces an additional element of
> instability to application that can appear from one day to the next
> without any change to an applications code base.
>
> Unfortunately, without a notion of version ranges, managing versions
> becomes prohibitive in projects with large dependency graphs.  If an
> application has several different transitive dependencies on a
> particular library, the application developer is forced to traverse the
> entire graph, examine all the dependencies, and choose the highest of
> them so that she is guaranteed not to hit NoClassDefFoundErrors or
> NoSuchMethodErrors at runtime.  For projects with hundreds of transitive
> dependencies, this is error-prone at best.  Version ranges allow each
> module to declare the minimum version it needs to run properly, and let
> maven do the work of finding a version acceptable to all modules in the
> dependency graph.

Isn't it the purpose of dependencyManagment to help in such a case?

>
>> There is talk about a plugin (can't recall which) that can lock down
>> the version of plugins and also tell you if newer versions are
>> available, so you can selectively decide to upgrade.  But I am not
>> sure if such a plugin exists yet.
>
> The versions-maven-plugin looks useful, but doesn't appear to address
> transitive dependencies which are never mentioned in an application's
> pom.xml.  That's one of the main issues I'm trying to solve.
>
>
> CONFIDENTIALITY NOTICE:  This message is intended only for the use and review 
> of the individual or entity to which it is addressed and may contain 
> information that is privileged and confidential.  If the reader of this 
> message is not the intended recipient, or the employee or agent responsible 
> for delivering the message solely to the intended recipient, you are hereby 
> notified that any dissemination, distribution or copying of this 
> communication is strictly prohibited.  If you have received this 
> communication in error, please notify sender immediately by telephone or 
> return email.  Thank you.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



-- 
Gilles Scokart

Reply via email to