Update: Found maven:reactor source code at: org.apache.maven.jelly.tags.maven.ReactorTag I still don't know how Jelly figures out this is a jelly tag but this is obviously the appropriate code.
ViewCVS link to relevant directory is: http://svn.apache.org/viewcvs.cgi/maven/maven-1/jelly-tags/trunk/src/main/java/org/apache/maven/jelly/tags/maven/?rev=112248 If you dig around you can see that ReactorTag delegates much of the work to: org.apache.maven.jelly.tags.maven.WerkzDependencyResolver (same directory as above) This delegates the real work to com.werken.werkz.WerkzProject. In an effort to find the source/javadoc for the werkz package I found: http://werkz.werken.com/ and http://werkz.sourceforge.net/ I can't seem to find the relevant content at http://werkz.werken.com and what I find at http://werkz.sourceforge.net has slightly different class names. It is apparent that the sourceforge content is related but it doesn't seem to be exactly what maven is using. Sadly from what I find at http://werkz.sourceforge.net there is no ParallelSession implementation. I am hoping that the version maven is actually using has already implemented such functionality. If not then it is apparent I will have to write it if I want to get parallel distributed builds working. Of course to do that I need to know exactly what werken distribution maven is using. I continue to need any guidance the reader can provide. On Apr 10, 2005 7:04 PM, James Carpenter <[EMAIL PROTECTED]> wrote: > Questions are at the bottom. > > ================================== > Summary: > > I am considering trying to build a rather large multiproject maven > build in a distributed fashion. I am looking for guidance on how to > best achieve this with a minimal amount of effort. In particular I am > looking for where to hook into the maven reactor during a multiproject > build. > > ================================== > Anticipated Design: > > My anticipated approach is the following: > 1) Share out the work directory on each developer's MS Windows based > workstation. > > 2) Build a simple JavaSpaces service that invokes an arbitrary maven > goal in a specified remote directory. The entity placed on the > JavaSpace by a developer's build will identify the developer's > machine, the developer's work directory, and the maven target to > invoke. The JavaSpace's service will either use it's own copy of > maven or it will leverage a copy of maven in the developer's work > directory in a known location. When the service completes running the > maven target it will report its completion (including success/failure > information) by placing an appropriate entity on the JavaSpace. > > The JavaSpaces service would be installed on a handful of cheap PC's > dedicated to distributed maven builds. > > 3) Build an appropriate maven plugin that communicates with the > JavaSpaces service. This plugin should leverage maven's existing > multiproject functionality in order to understand the inter-project > dependencies. It is hope this can be done with minimal effort. > > ================================== > Notes: > > 1) I am only concerned with building projects in parallel. There is > no need to complicate the design by supporting distributed builds > within a project. > > 2) The developer's interaction with the distributed build should be > through maven. The usage should be similar to that of using the > multiproject plugin. The only difference is the multiproject-distrib > plugin would actually be farming work out to the build boxes. > > 3) It is expected the CPU and memory resources of the build servers > will be the greatest performance bottleneck and the disk I/O of the > developer's workstation will not initially be a problem. When/if disk > I/O becomes a problem the work directory can be kept in sync with a > few remote copies. > > 4) Current build time is dominated by JUnit tests not compilation. > There may be some value in compiling first and running tests second. > This will help parallelize the most time consuming portion of the > build. (Performance issues with JUnit tests are a nice problem to > have.) > > 5) The design chosen should be very simple to build and maintain. The > only reason I'm interested in solving this problem is the build cycle > has become painfully slow (15min or more) and is affecting agility. I > don't want to get sucked into build management, I just want the builds > to go faster. Complete builds under 1 or 2 minutes would make me very > happy. A continuous integration environment can make snapshots > available, but thats still not quite the same as running all the junit > tests across all the projects. (Although it would be better than 15 > minute builds.) > > ================================== > Relevant knowledge: > > 1) I have lots of experience writing custom Ant tasks. > > 2) Very little development experience with maven plugins, but work > with people who have written several. (i.e. I don't really know Jelly > well.) > > 3) Don't know much about JavaSpaces, but the examples look pretty > simple. As my problem is fairly simple I can probably do what I need > without getting into the nitty gritty of JINI. It looks like > JavaSpaces is simple but learning JINI well is like learning EJBs > well. It does seem that a Linda engine is the easiest way to solve my > problem. > > ================================== > Questions: > > 1) Where do I hook into maven:reactor to figure out the build > dependencies? Where is the documentation for the maven:reactor goal? > Where is the file that tells me what java classes are associated with > the maven:reactor goal?. > > 2) Is there any open-source project (maven plugin) out there that has > already solved this problem? So far I havn't been able to find > anything close other than rant and AntSpaces > (http://www.oopsconsultancy.com/software/antspaces/). > > 3) If I can't find dedicated build boxes, I need to have the JavaSpace > service only run when a PC has it's screen locked. Any > recommendations here? I can't even think of how I can figure this out > inside of a Java application. Such low level system information isn't > typically exposed to Java. Maybe someone has already written > something that takes care of the problem for me. Could use guidance > here. > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]