I have now submitted my work as a patch attched to MNG3004. It still only solves MNG3004 (I am considering 2802 a different patch or I'll never finish anything ;)
The last version can be downloaded from http://cloud.github.com/downloads/krosenvold/maven3/apache-maven-3.0-SNAPSHOT-bin.tar.gz (This version is based on M3 trunk as r890474 - latest as of 10 minutes ago) See some docs at http://github.com/krosenvold/maven3. I would be very happy if someone could review this and hopefully accept it into the 3.X range. A few notes to reviewers: The patch mainly affects DefaultLifecycleExecutor. Since I considered this class to be way too large I did a large number of "extract class" operations to this class - splitting it into a large number of (plexus) components. This is mostly mechanical ide-based operations that does not change the logic of the code. The "essence" of the patch can be observed by starting at DefaultLifecycleExecutor and working into LifecycleWeaveBuilder. I have also added a significant number of new unit tests, as well as the existing integration tests that Dan Fabulich wrote. This also includes tests for some of the old logic that has now become unit-testable. There are also stubs for most of components extracted from DefaultLifecycleExecutor, meaning it is possible to unit-test these further. I have not written tests for *all* the 2000 lines of code that used to be in DefaultLifeCycleExecutor. All integration tests run OK - unchanged. Regarding compatibility: There MAY be some unforseen/untested comptibility requirements in DefaultLifecycleExecutor, LifecycleExecutor or MavenExecutionPlan that I am now aware of. Re-adding these is trivial if anyone knows what they are. I have seen some bits and bobs on the wiki, but unsure if these apply to 3.x. Understanding this work: I think of this work as building a foundation on which it is possible to experiment/exploit further concurrency and constraints. There is actually a declarative representation of concurrency relationships/constraints (in DefaultLifecycles), and the LifecycleWeaveBuilder implements this model. With such a model it should be fairly simple to express further constraints and also work more on different scheduling plans. I have no problems seeing this evolve further into selectable "concurrency strategies" that can be applied to different kinds of projects (if one shoe cannot be made to not fit all). As can be seen from the docs (link), not all kinds of plugins are yet represented in the model, so this version will not build "any" project. I have had feedback from several "enterprise" users that have successfully used this patch to double their reactor build speeds. Hope someone can spend the time it takes to review this. The patch is at http://jira.codehaus.org/browse/MNG-3004 specifically http://jira.codehaus.org/secure/attachment/46434/mng3004.patch Kristian --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
