I think this looks pretty sweet and similar to the proposal I wrote last
year (but didn't implement yet):
http://docs.codehaus.org/display/MAVEN/Make+Like+Reactor+Mode

I think that this really belongs in core. Now that trunk has moved to
3.0 and we will have a new 2.1 branch (when we decide to cut it from
2.0.10 or 2.0.9...not sure where the current one came from), this would
be perfect to fit in as a new feature. I don't want the new 2.1.0 to
grow into a monster so for example we could implement this and release
it, then we could add the parallel download and release as 2.2 etc.



-----Original Message-----
From: Dan Fabulich [mailto:[EMAIL PROTECTED] 
Sent: Thursday, August 14, 2008 8:38 PM
To: Maven Users List; Maven Developers List
Subject: New sandbox plugin: maven-reactor-plugin


I've checked in a new plugin to the sandbox called the "Maven Reactor 
Plugin".  You can use it to build a subset of interdependent projects in
a 
reactor.  It should be useful in large reactor builds that include 
irrelevant stuff you're not working on.

It includes the following goals:

reactor:resume - resume a reactor at a certain point (e.g. when it fails
   in the middle)
   Example: mvn reactor:resume -Dfrom=bar

reactor:make - build a project X and all of the reactor projects on
which
   X depends
   Example: mvn reactor:make -Dmake.folders=foo,bar

reactor:makeDependents - build a project X and all of the reactor
projects
   that depend on X
   Example: mvn reactor:make -Dmake.folders=foo,bar

(e.g. if foo depends on baz and quz depends on bar, :make will build 
foo,bar,baz whereas :makeDependents will build foo,bar,quz)

reactor:makeMyChanges - build all reactor projects that you personally
   have changed (according to SCM) and all reactor projects that depend
   on your changes
   Example: mvn reactor:makeMyChanges

All of these take an argument -Dmake.printOnly which you can use to see 
what the plugin would have done without actually doing it.  (This is
handy 
for debugging and exploration.)

This plugin was easy to write, so I fear that it may duplicate other
work, 
or that there may already be some clever command line tool to do this 
stuff.

Feedback is appreciated.  It seems to kinda-sorta work on my machine.

The sources are here:

https://svn.apache.org/repos/asf/maven/sandbox/trunk/plugins/maven-react
or-plugin

there are some TODOs:

http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-reactor-p
lugin/TODO.txt?view=markup

I've deployed a snapshot:

http://people.apache.org/repo/m2-snapshot-repository/org/apache/maven/pl
ugins/maven-reactor-plugin/

If you want to try it on your machine, copy and paste this POM into a 
file (e.g. myfile.xml):

<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
   <modelVersion>4.0.0</modelVersion>
   <groupId>example</groupId>
   <artifactId>example</artifactId>
   <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>example</name>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-reactor-plugin</artifactId>
       <version>1.0-SNAPSHOT</version>
       <type>maven-plugin</type>
     </dependency>
   </dependencies>
   <repositories>
     <repository>
       <id>apache-snapshots</id>
       <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
     </repository>
   </repositories>
</project>

Then run "mvn -U -cpu -f myfile.xml dependency:resolve".  That should 
download the deployed snapshot into your local repository.

Since it's a snapshot, you'll have to run it like this:

mvn org.apache.maven.plugins:maven-reactor-plugin:1.0-SNAPSHOT:make
-Dmake.printOnly -Dmake.folders=foo

Please do that and e-mail me to let me know what breaks, or tell me that

I'm an idiot.  :-)

-Dan


---------------------------------------------------------------------
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