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 C2F557C17 for ; Fri, 22 Jul 2011 08:09:25 +0000 (UTC) Received: (qmail 68072 invoked by uid 500); 22 Jul 2011 08:09:17 -0000 Delivered-To: apmail-maven-users-archive@maven.apache.org Received: (qmail 67571 invoked by uid 500); 22 Jul 2011 08:09:03 -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 67544 invoked by uid 99); 22 Jul 2011 08:08:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jul 2011 08:08:59 +0000 X-ASF-Spam-Status: No, hits=0.7 required=5.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [217.146.183.226] (HELO nm2-vm0.bullet.mail.ukl.yahoo.com) (217.146.183.226) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 22 Jul 2011 08:08:51 +0000 Received: from [217.146.183.210] by nm2.bullet.mail.ukl.yahoo.com with NNFMP; 22 Jul 2011 08:08:29 -0000 Received: from [217.146.183.34] by tm3.bullet.mail.ukl.yahoo.com with NNFMP; 22 Jul 2011 08:08:29 -0000 Received: from [127.0.0.1] by omp1023.mail.ukl.yahoo.com with NNFMP; 22 Jul 2011 08:08:29 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 699562.96327.bm@omp1023.mail.ukl.yahoo.com Received: (qmail 66651 invoked by uid 60001); 22 Jul 2011 08:08:29 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.fr; s=s1024; t=1311322109; bh=Uvvbmju3pZdUyYp6VLcRHwDLECHH4bwPbhEPft8LXGM=; h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=zPNJ4K5Xn5codSkhEPEeTW2JElgcHeoG29stZ4w9NVfMDcZwkYJ08cWnVRk80DdulmEEttl2zLXuxo+3kwdcMW0sFuJ3S5oVgzDxZ4FziCWejhStKM0GdA0FFK/b5+Ws6OeUMF9SKCajzfqh5d1q8ozq1VXrpmwFFSYupseO/Jc= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.fr; h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=DSEuOI4XcYSOm50n5PavYjWwDAQZa5+Be+oP6ybODmPVeXi++CQFmfzVt/o6JslPKkR/gS4xT8Y/tdD1wBX0eSDg3530RFkYFqccb8AN99Kr++5E0tyZd0VWecSfVx9CfwyoWJ9qgLYBQwLxpnA3qnFZeXMtK6bybSpJ2+ph3tw=; X-YMail-OSG: 4lfYtxsVM1lqRqbkrz90WJ9JSazhcDPfxh8XZyXJYDw2uUp hbFTHF9v1cC_.FJ7QeAxF9HIzkTYSAm.Eo6EuxEide2HdpZd9zt5.FCbCNl9 Ht0xABakwfzFuF2vb2brBZIIAddIzWgbWL4CPQiSizZxvF4gBsTmGz43PcJN RMUS3.jMY62ey58Mh2zjd9CHQTpzvUGD_WhYPXJhKGRFh9Blk9EewcRkeq1g j0tzpTPj.PhEwsecdeCS6DH.4zu4rwhBj_NCGEyNsuaoGwU54Ir3.roK9WHf .zCNF5kdIYPZPh_GTgLZ7dLPlBV4zGTa79HlaJKq0zsw5N66PyHHKnwruW8f YtrWL2TQdcHmjzYqRC4UtUxSlSQ-- Received: from [217.108.192.139] by web28503.mail.ukl.yahoo.com via HTTP; Fri, 22 Jul 2011 09:08:29 BST X-Mailer: YahooMailWebService/0.8.112.307740 Message-ID: <1311322109.55066.YahooMailNeo@web28503.mail.ukl.yahoo.com> Date: Fri, 22 Jul 2011 09:08:29 +0100 (BST) From: Julien HENRY Reply-To: Julien HENRY Subject: Maven API: how to get "reactor" order To: Maven Users List MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hi,=0A=0ABackground: I'm trying to develop a release helper tool for my com= pany. We can't use the maven-release-plugin for several reasons. We have a = notion that is like a "release train" were several projects must be release= d at the same time. These projects can be Maven multi-module projects. Thes= e projects can have interdependencies (SNAPSHOT). But of course no SNAPSHOT= dependency is allowed on a project that is not in the release train.=0A=0A= Basically, I'm trying to have a tool to replace the current manual process:= =0A=A0=A0=A0 1) think about release order according to inter dependencies (= cycles are forbidden)=0A=0A=A0=A0=A0 2) mvn release:prepare release:perform= on first project=0A=A0=A0=A0 3) update all references to this project (rep= lace SNAPSHOT version by released version) in all pom of the release train= =0A=A0=A0=A0 4) mvn release:prepare release:perform on second project=0A=A0= =A0=A0 5) update all references to this project (replace SNAPSHOT version b= y released version) in all pom of the release train=0A=A0=A0=A0 ... (repeat= for all projects of the train)=0A=0A=0AWe already have a "tweak" to allow = a full build of the release train with one Maven command. We have a tool th= at create a Maven aggregator pom where each submodule is a svn:externals li= nking to the trunk of each project.=0A=0Apom.xml (aggregator)=0A=0Aproject1= -> svn:externals to another_location/project1/trunk=0A=0Aproject2-> svn:ex= ternals to another_location/project2/trunk=0A...=0A=0AprojectN-> svn:extern= als to another_location/projectN/trunk=0A=0ANow I try to do step 1 automati= cally. I want to find release order based on inter dependencies of my relea= se train. I found the ProjectSorter class in Maven API, but it seems I have= to create a MavenProject for each project, and each sub module (as it seem= s this is not recursive).=0AIs there a better way ?=0A=0AIn fact the best w= ould be to create a graph of interdependencies. Because I would also try to= detect and prevent this kind of cycle:=0Aproject1/submodule1 depend on pro= ject2/submodule1=0Aproject2/submodule1 depend on project1/submodule2=0A=0AT= hanks for any pointer.=0A=0AJulien=0A --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@maven.apache.org For additional commands, e-mail: users-help@maven.apache.org