------ Introduction ------ Dan Fabulich ------ 2008-08-15 ------ ~~ Licensed to the Apache Software Foundation (ASF) under one ~~ or more contributor license agreements. See the NOTICE file ~~ distributed with this work for additional information ~~ regarding copyright ownership. The ASF licenses this file ~~ to you under the Apache License, Version 2.0 (the ~~ "License"); you may not use this file except in compliance ~~ with the License. You may obtain a copy of the License at ~~ ~~ http://www.apache.org/licenses/LICENSE-2.0 ~~ ~~ Unless required by applicable law or agreed to in writing, ~~ software distributed under the License is distributed on an ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~~ KIND, either express or implied. See the License for the ~~ specific language governing permissions and limitations ~~ under the License. Maven 2 Reactor Plugin This plugin can 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. * Goals Overview The Reactor plugin has several goals: * {{{./resume-mojo.html}reactor:resume}} resumes a reactor at a certain point (e.g. when it fails in the middle) Example: <<>> * {{{./make-mojo.html}reactor:make}} builds a project X and all of the reactor projects on which X depends Example: <<>> * {{{./make-dependents-mojo.html}reactor:make-dependents}} builds a project X and all of the reactor projects that depend on X (the reverse of reactor:make) Example: <<>> * {{{./make-scm-changes-mojo.html}reactor:make-scm-changes}} build all reactor projects that you personally have changed (according to SCM) and all reactor projects that depend on your changes Example: <<>> * make vs. make-dependents The goals <<>> and <<>> are very similar. They differ in the of dependency analysis. For example, suppose project "fooUI" depends on project "barBusinessLogic", which depends on project "bazDataAccess". +---+ fooUI --> barBusinessLogic --> bazDataAccess +---+ Ordinarily, when building, you'll first build bazDataAccess, then barBusinessLogic, then fooUI. * <>: In order to "make" barBusinessLogic, you first have to build bazDataAccess. So if you run reactor:make on barBusinessLogic, it will build bazDataAccess, and then build barBusinessLogic; it won't build fooUI. (This should remind you of the traditional "make" tool.) +---+ barBusinessLogic --> bazDataAccess +---+ * <>: Because fooUI depends on barBusinessLogic, fooUI is a "dependent" project of barBusinessLogic. Anything that depends on barBusinessLogic is one of barBusinessLogic's "dependents." Hence, reactor:make-dependents will build barBusinessLogic, and then build fooUI. +---+ fooUI --> barBusinessLogic +---+ [] <> * Examples To provide you with better understanding on some usages of the Reactor Plugin, you can take a look at the {{{./examples.html}examples}} page.