Return-Path: Delivered-To: apmail-incubator-ivy-user-archive@locus.apache.org Received: (qmail 5848 invoked from network); 12 Jun 2007 12:40:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Jun 2007 12:40:08 -0000 Received: (qmail 7661 invoked by uid 500); 12 Jun 2007 12:40:01 -0000 Delivered-To: apmail-incubator-ivy-user-archive@incubator.apache.org Received: (qmail 7614 invoked by uid 500); 12 Jun 2007 12:40:01 -0000 Mailing-List: contact ivy-user-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ivy-user@incubator.apache.org Delivered-To: mailing list ivy-user@incubator.apache.org Received: (qmail 7485 invoked by uid 99); 12 Jun 2007 12:40:00 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Jun 2007 05:40:00 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of xavier.hanin@gmail.com designates 209.85.146.180 as permitted sender) Received: from [209.85.146.180] (HELO wa-out-1112.google.com) (209.85.146.180) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Jun 2007 05:39:55 -0700 Received: by wa-out-1112.google.com with SMTP id n4so1364753wag for ; Tue, 12 Jun 2007 05:39:35 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=Y8XdHbYyHugEBBIsmqxXby+QXP9ZBYMDOZ5kUh0m8pNMJOX/OEMyTgyY/qx5tcvjK+0Pa54qxwfmUAQ0Is/ns0x5lrB6jO3uloZTN9yGjk4RBwOlasHWhcGk8KSE25u3Rhl25H1iP9G+CHfAq7Tr6X15ZEG1roniYyjhNxX5QcU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=dyHymMlQhf7AxhzKshYDmqiyQ/nd3/WPOvcukuEmGUtHgM49yw/TNlVt97NuOk+o7lfZibI3d33MhCZrqs4+v5C8QUBHZYrn+XgGRa+RBdGj0eRjGCnVt+tNSGbPPrPJVE4wLVbfMFmTZdYCKm5c0xh7VSlvFM02wesR9od/35k= Received: by 10.114.78.1 with SMTP id a1mr6595474wab.1181651974945; Tue, 12 Jun 2007 05:39:34 -0700 (PDT) Received: by 10.114.120.20 with HTTP; Tue, 12 Jun 2007 05:39:34 -0700 (PDT) Message-ID: <635a05060706120539n3ab8f3ddg2f7406596e95155@mail.gmail.com> Date: Tue, 12 Jun 2007 14:39:34 +0200 From: "Xavier Hanin" To: ivy-user@incubator.apache.org Subject: Re: Working with version ranges In-Reply-To: <05e601c7aced$002686e0$2120a8c0@isabelteam.be> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_4550_7850445.1181651974917" References: <05e601c7aced$002686e0$2120a8c0@isabelteam.be> X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_4550_7850445.1181651974917 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 6/12/07, Gilles Scokart wrote: > > > > The current ivy implementation can use version ranges in its dependency. > When using a range ivy search for the latest revision available in the > repository that will match the range. (Correct me if I'm wrong!). Indeed, this is how Ivy works. Shouldn't ivy take into account the other dependencies as well? For > example, if we have A depending on C version [1.0,3.0[, and A depending B > which depends on V version 1.5. > The current implementation will return the latest available revision > contained in [1.0,3.0[. Shouldn't ivy return the revision 1.5, even if > there are 2.1 in the repository? (If it is already possible to do that, > tell me how). It's something that could be useful, and that we "need" to implement to be compatible with maven 2 version ranges processing. This requires some thought, because this is something that is even more useful in published metadata. Some users have already requested something like storing two information in the published metadata: the compatible range and the exact version to which the dependency resolution lead at time of publication (the only information available right now). This could be useful for conflict management too, to tell if a dependency is resolved outside the compatiblity scope (which is also something that maven 2 does). Also, I'm wondering if it wouldn't make sense to take the first available > version. Indeed if I say that my modules requires 1.+, I think it's > better > to compile with a 1.0 version. Indeed, the probability is bigger that a > version compiled/tested with 1.0 works also with a 1.1 than the opposite > (a > version compiled/tested with 1.1 working with a 1.0). Also when we > publish, > if we want to fix the published dependencies, I'm wondering if it wouldn't > not be better to publish 1.0, instead of 1.x (where x is the highest > number > available when we make the build). Maybe this is something that need to be more flexible than it is. Version mediation is not an easy thing, but we could try to have something flexible enough to handle both cases (take the latest or oldest possible which is not conflicting with another one). What makes this kind of thing difficult is that we do not have access to the whole dependency graph: we need to download metadata to acquire information about modules, and this is a costly operation that Ivy tries to do as few times as possible. But improving this kind of flexibility would definitely be helpful if well thought. Xavier WDYT? > > Gilles > > > -- Xavier Hanin - Independent Java Consultant Manage your dependencies with Ivy! http://incubator.apache.org/ivy/ ------=_Part_4550_7850445.1181651974917--