I have just tested to be sure and it works (Maven 3.0.3):

[INFO] Reactor Summary:
[INFO] 
[INFO] module-1 .......................................... SUCCESS [0.471s]
[INFO] module-1-2 ........................................ SUCCESS [2.141s]
[INFO] module-2 .......................................... SUCCESS [0.007s]
[INFO] module-2-1 ........................................ SUCCESS [1.116s]
[INFO] module-1-1 ........................................ SUCCESS [0.751s]
[INFO] aggregator ........................................ SUCCESS [0.005s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

aggregator/pom.xml
  - module-1/pom.xml
    --- module-1-1/pom.xml
    --- module-1-2/pom.xml
  - module-2/pom.xml

    --- module-2-1/pom.xml

1-1 depends on 2-1
2-1 depends on 1-2

Anyway I want to detect and prevent this case. In my organisation module-1 and 
module-2 would be top level projects that have their own trunk/tag/branch.

Going back to my question: which API can I use to get the reactor order, or 
better the reactor graph.

Thanks

Julien


----- Mail original -----
> De : Ron Wheeler <[email protected]>
> À : [email protected]
> Cc : 
> Envoyé le : Vendredi 22 Juillet 2011 13h07
> Objet : Re: Maven API: how to get "reactor" order
> 
> On 22/07/2011 4:08 AM, Julien HENRY wrote:
>>  Hi,
>> 
>>  Background: I'm trying to develop a release helper tool for my company. 
> 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 released 
> at the same time. These projects can be Maven multi-module projects. These 
> projects can have interdependencies (SNAPSHOT). But of course no SNAPSHOT 
> dependency is allowed on a project that is not in the release train.
>> 
>>  Basically, I'm trying to have a tool to replace the current manual 
> process:
>>       1) think about release order according to inter dependencies (cycles 
> are forbidden)
>> 
>>       2) mvn release:prepare release:perform on first project
>>       3) update all references to this project (replace SNAPSHOT version by 
> released version) in all pom of the release train
>>       4) mvn release:prepare release:perform on second project
>>       5) update all references to this project (replace SNAPSHOT version by 
> released version) in all pom of the release train
>>       ... (repeat for all projects of the train)
>> 
>> 
>>  We already have a "tweak" to allow a full build of the release 
> train with one Maven command. We have a tool that create a Maven aggregator 
> pom 
> where each submodule is a svn:externals linking to the trunk of each project.
>> 
>>  pom.xml (aggregator)
>> 
>>  project1 ->  svn:externals to another_location/project1/trunk
>> 
>>  project2->  svn:externals to another_location/project2/trunk
>>  ...
>> 
>>  projectN->  svn:externals to another_location/projectN/trunk
>> 
>>  Now I try to do step 1 automatically. I want to find release order based on 
> inter dependencies of my release 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 seems this is not recursive).
>>  Is there a better way ?
>> 
>>  In fact the best would be to create a graph of interdependencies. Because I 
> would also try to detect and prevent this kind of cycle:
>>  project1/submodule1 depend on project2/submodule1
>>  project2/submodule1 depend on project1/submodule2
> Can you explain how this would come about.
> 
> I do not see how this is possible,  You would never get the projects to 
> build as SNAPSHOTs in the first place.
> 
> Ron
> 
>>  Thanks for any pointer.
>> 
>>  Julien
>> 
>> 
>>  ---------------------------------------------------------------------
>>  To unsubscribe, e-mail: [email protected]
>>  For additional commands, e-mail: [email protected]
>> 
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to