Return-Path: X-Original-To: apmail-maven-users-archive@www.apache.org Delivered-To: apmail-maven-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7A71A1037B for ; Tue, 4 Feb 2014 09:55:48 +0000 (UTC) Received: (qmail 67004 invoked by uid 500); 4 Feb 2014 09:55:44 -0000 Delivered-To: apmail-maven-users-archive@maven.apache.org Received: (qmail 66934 invoked by uid 500); 4 Feb 2014 09:55:44 -0000 Mailing-List: contact users-help@maven.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Maven Users List" Reply-To: "Maven Users List" Delivered-To: mailing list users@maven.apache.org Received: (qmail 66926 invoked by uid 99); 4 Feb 2014 09:55:44 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 04 Feb 2014 09:55:44 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of stephane.nicoll@gmail.com designates 209.85.216.44 as permitted sender) Received: from [209.85.216.44] (HELO mail-qa0-f44.google.com) (209.85.216.44) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 04 Feb 2014 09:55:38 +0000 Received: by mail-qa0-f44.google.com with SMTP id w5so11974715qac.31 for ; Tue, 04 Feb 2014 01:55:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=8pJxKXRV2xfzQhaCtI6SPbppLYTwSkbdkiPW6ZC/3cs=; b=bQlk7Kgz7ctVv9td7DW4RPGdfqLnjfp2cYtjplN8k17hygzhwFvDuBRa2JNi3OJlAL 5cYD7q8KBamuqSdUM3HEjsmGYS1pQt7SqfTsSR2syYeoOvEL+fJpb5XJVmasznlLN8XB fdDQae0r+C1ZeBiqxQZ8ykOVK95RAom6fay4UBTd/8la933qwdRoY0knb7zY7S7Gf+Su y3+bijSd3jWpPe/H9aaGD68UjPmYthVeUBUHZRtjYzHvMpoClIkt4/uyKBD83UPc2IKB 1hCdY/IOvveV6aZ878jrvq3ahokLy9tPrQ8W/ylC+q4LorRc9wFduOM0saUuzzEDPjGp e/1Q== MIME-Version: 1.0 X-Received: by 10.229.90.199 with SMTP id j7mr64071222qcm.14.1391507717279; Tue, 04 Feb 2014 01:55:17 -0800 (PST) Received: by 10.140.22.163 with HTTP; Tue, 4 Feb 2014 01:55:17 -0800 (PST) In-Reply-To: References: Date: Tue, 4 Feb 2014 10:55:17 +0100 Message-ID: Subject: Re: dependency management across projects From: Stephane Nicoll To: Maven Users List Content-Type: multipart/alternative; boundary=001a11343cdc30d32504f191a3dd X-Virus-Checked: Checked by ClamAV on apache.org --001a11343cdc30d32504f191a3dd Content-Type: text/plain; charset=ISO-8859-1 Thanks for the feedback. This looks like something that the versions-maven-plugin could do. There's something similar that is advertised by the plugin documentation but it's not implemented. I'll have a look to that too. Thanks! S. On Mon, Feb 3, 2014 at 6:39 PM, Curtis Rueden wrote: > Hi everyone, > > > > The very point I am trying to make here is > > > "how do you manage that manual BOM on a daily basis". > > > > There is no automatic solution for this that I know of. > > Maybe not exactly what you are looking for, but sort of similar: > > My group uses a script [1] to automatically bump the version of our parent > POM [2]. > > In that parent POM, we declare many version properties, plugin > configuration in pluginManagement, etc., and we like to keep all our > projects across various Git repositories using the newest available version > of the parent, to minimize version clashes when mixing and matching > libraries. > > We set up a parameterized Jenkins job [3] to run the parent bump for us, > which provides checkboxes for all the downstream projects so the bump can > be controlled individually. > > It's not perfect but it does save a lot of manual maintenance. > > Regards, > Curtis > > [1] > > https://github.com/scijava/scijava-scripts/blob/a0fc8006741e0216c74c82866fd1bb1a7d364d55/bump-pom-scijava.sh > [2] > > https://github.com/scijava/pom-scijava/blob/0de0676f7731b98baa89379dc8b92f8b26a5d086/pom.xml > [3] http://jenkins.imagej.net/view/SciJava/job/Bump-POM-SciJava/ > > > On Mon, Feb 3, 2014 at 1:21 AM, Anders Hammar wrote: > > > > > > > > The release of the BOM would be that release of "a single coherent > > unit" > > > > then. It would specify the (marketing) version of the "platform" P. > > > > For example, P v1.0.0 will include v1.2.3 of SP1 (sub-product 1), > > v1.4.3 > > > of > > > > SP2, etc. > > > > > > Isn't it what I just write in my original post? (without mentioning the > > > BOM) > > > > > > > I believe so, yes. The key thing in my "solution" is the BOM. And the BOM > > will keep the appropriate version of the the sub-products together. > > > > > > > > > The very point I am trying to make here is > > > "how do you manage that manual BOM on a daily basis". Each sub-project > > has > > > its own release cycle and we cannot force the versions it has to use > for > > a > > > specific branch. For instance, the product might state that the > > dependency > > > D should be 2.2.0 (because that's the latest or the one that people > > > generally use) but for backward compatibility reason SP2 has to use > > 1.8.0. > > > > > > > There is no automatic solution for this that I know of. I suppose that > > tolls could be created, but keep in mind that in the end, "for backward > > compatibility reason SP2 has to use 1.8.0" is normally a human decision. > > > > /Anders > > > > > > > > > > Creating manually the first BOM for P v1.0.0 isn't a problem: i've > > created > > > a set of tools that I am happy to share once they are fully ready. But > > > maintaining that BOM in the long run is more of a challenge (because we > > > can't force the sub-projects to use those versions so we have to > monitor > > > what happens in each sub-project to take the appropriate version at the > > > product level). > > > > > > Thanks again for the feedback! > > > > > > S. > > > > > > > > > > > > > > /Anders > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > There is also the possibility of creating a "grouping pom", which > > > lists > > > > > all > > > > > > artifacts as dependencies. You would then declare a dependency to > > > that > > > > > > grouping pom and get all deps magically sucked in. However, this > is > > > not > > > > > > really the "Maven way" in my opinion as you wouldn't specify your > > > > direct > > > > > > deps bu sort of relly on transitive deps. There are some fans of > > this > > > > > > approach though here on this list. > > > > > > > > > > > > > > > > > > > 2. Build configs that *force* each sub-project to run with the > > list > > > > of > > > > > > > dependencies for the project (to ensure all tests pass, etc). > > This > > > is > > > > > to > > > > > > be > > > > > > > used alongside the regular build job for validation purpose > > > > > > > > > > > > > > > > > > > Maybe some enforcer rule? > > > > > > > > > > > > > > > > Like I said, this is to be used alongside the regular build job. So > > my > > > > SP4 > > > > > 1.2.0-SNAPSHOT is building with a set of dependencies on its own > and > > I > > > > want > > > > > to validate that with the dependencies of the target release for P, > > it > > > is > > > > > also working just fine. It may just be the same ideally or slightly > > > > > different (or not slightly at all which requires an explicit > > > validation). > > > > > > > > > > So I need to be able to swap those versions for validation purposes > > and > > > > run > > > > > the build with that. > > > > > > > > > > S. > > > > > > > > > > > > > > > > > > > > > > > > > > > /Anders > > > > > > > > > > > > > > > > > > > > > > > > > > I started to look at this and my first trial was to generate a > > > report > > > > > > with > > > > > > > all the dependencies of each project and build a consolidated > > > report > > > > > > that I > > > > > > > can match against the candidates. This would help manage the > > first > > > > goal > > > > > > as > > > > > > > if a dependency gets added, removed or updated, the global > > > > > > > dependencyManagement has to be impacted manually (do we upgrade > > or > > > > not, > > > > > > > etc). > > > > > > > > > > > > > > For the second part, it's not easy to force a dependency change > > in > > > > > Maven, > > > > > > > especially if the version has been specified at the project > > level. > > > > > > > > > > > > > > Thanks for reading that far. If you have any idea or know any > > > > > > organisation > > > > > > > that tried to implement that, I'd be interested > > > > > > > > > > > > > > Thanks! > > > > > > > S. > > > > > > > > > > > > > > > > > > > > > > > > > > > > --001a11343cdc30d32504f191a3dd--