You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Bruce Snyder <fe...@frii.com> on 2004/11/03 23:35:29 UTC

difference between reactor and multiproject

What is the difference between reactor and multiproject?

I've got a project of about 12 or so subprojects and I'm building the 
whole thing with reactor goals. Is this correct or should I be using 
mutiproject?

Bruce
-- 
perl -e 'print 
unpack("u30","<0G)U8V4\\@4VYY9&5R\\"F9E<G)E=\\$\\!F<FEI+F-O;0\\`\\`");'

The Castor Project
http://www.castor.org/

Apache Geronimo
http://geronimo.apache.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: difference between reactor and multiproject

Posted by Bruce Snyder <fe...@frii.com>.
Feilpe Vieira Silva wrote:
> can you provide me your reactor configuration file ?
> 
> I´m doing my configuration file right now, but I´m having some newby problems...

I assume you're referrring to the maven.xml descriptor. Below is a small 
portion of the maven.xml that we set up:

<project xmlns:j="jelly:core"
     xmlns:a="jelly:ant"
     xmlns:m="jelly:maven"
     xmlns:util="jelly:util"
     default="default">

     <goal name="default" description="Build all modules">
         <attainGoal name="check:cwd"/>
         <m:reactor basedir="${basedir}"
             includes="modules/**/project.xml"
             excludes="modules/transformer/pcitoaces/persist/project.xml"
             goals="default"
             banner="Building: "
             ignoreFailures="false"/>
     </goal>

     <preGoal name="build:start">
         <!-- <attainGoal name="check:cwd"/> -->
         <attainGoal name="requireBuildProps"/>
         <attainGoal name="buildtype"/>
     </preGoal>

     <goal name="buildtype">
         <j:set var="build_type" value="${buildtype}"/>
         <j:if test="${build_type == null}">
             <j:set var="build_type" value="dev"/>
         </j:if>
         <echo>Build Type = '${build_type}'</echo>

         <j:if test="${!build_type.equals('dev') and 
!build_type.equals('test') and !build_type.equals('prod')}" >
             <echo>***********************************************</echo>
             <echo>****                                       ****</echo>
             <echo>**** buildtype must be dev, test, or prod  ****</echo>
             <echo>****                                       ****</echo>
             <echo>***********************************************</echo>
             <fail/>
         </j:if>

         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="flipper.db.user" 
value="${context.getVariable(var_name)}"/>
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="flipper.db.password" 
value="${context.getVariable(var_name)}" />
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="flipper.db.url" 
value="${context.getVariable(var_name)}" />
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="quartz.db.user" 
value="${context.getVariable(var_name)}" />
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="quartz.db.password" 
value="${context.getVariable(var_name)}" />
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="quartz.db.url" 
value="${context.getVariable(var_name)}" />
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="jbm.db.user" 
value="${context.getVariable(var_name)}" />
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="jbm.db.password" 
value="${context.getVariable(var_name)}" />
         <j:set var="var_name" value="${buildtype}.flipper.db.user"/>
         <j:set var="jbm.db.url" value="${context.getVariable(var_name)}" />

     </goal>

     <goal name="requireBuildProps">

         <property name="project.name" 
value="${context.getProject().getName()}"/>
         <condition property="build.failure">
             <contains string="${user.dir}" substring="modules"/>
         </condition>
         <fail if="build.failure" message="${failure.msg}"/>

         <util:file var="buildProps" name="${user.dir}/build.properties"/>
         <j:if test="${buildProps.exists() == 'false'}">
             <echo>***********************************************</echo>
             <echo>***********************************************</echo>
             <echo>****                                       ****</echo>
             <echo>**** MISSING build.properties FILE AT ROOT ****</echo>
             <echo>****                                       ****</echo>
             <echo>***********************************************</echo>
             <echo>****                                       ****</echo>
             <echo>****            CANCELLING BUILD           ****</echo>
             <echo>****                                       ****</echo>
             <echo>***********************************************</echo>
             <echo>***********************************************</echo>
             <fail/>

         </j:if>
     </goal>

     <!-- Begin Commons goals -->
     <goal name="commons:default" description="Builds the commons module">
         <m:reactor basedir="${basedir}"
             includes="modules/commons/project.xml"
             goals="default"
             banner="Building: "
             ignoreFailures="false"/>
     </goal>
     <!-- End Commons goals -->

     <!-- Begin Console goals -->
     <goal name="console:default" description="Build the war file">
         <attainGoal name="check:cwd"/>
         <m:reactor basedir="${basedir}"
             includes="modules/console/project.xml"
             goals="default"
             banner="Building Console war: "
             ignoreFailures="false"/>
     </goal>

     <goal name="console:webdoclet" description="Builds the struts 
validation.xml">
         <m:reactor basedir="${basedir}"
             includes="modules/flipperconsole/project.xml"
             goals="webdoclet"
             banner="WEBDoclet: "
             ignoreFailures="false"/>
     </goal>

     <!-- Begin EAR goals -->
     <goal name="deploy:ear" prereqs="default">
         <m:reactor basedir="${basedir}"
             includes="modules/ear/project.xml"
             goals="deploy:ear"
             ignoreFailures="false"
             banner="Deploying: " />
     </goal>

     <goal name="clean:deploy:ear">
         <attainGoal name="check:cwd"/>
         <attainGoal name="clean"/>
         <attainGoal name="deploy:ear" />
     </goal>
     <!-- End EAR goals -->

     ...

</project>

It continues on from here for almost every module. The check:cwd goal 
assures that you're sitting in the top level dir when building. This is 
because I haven't found a way to build from down in one of the 
subprojects. The problem is that we've got interdependencies between 
subprojects and when you try to build from down in a subproject maven 
can't find any of the interdependencies. There may be a way around this, 
but I haven't found it yet.

Bruce
-- 
perl -e 'print 
unpack("u30","<0G)U8V4\\@4VYY9&5R\\"F9E<G)E=\\$\\!F<FEI+F-O;0\\`\\`");'

The Castor Project
http://www.castor.org/

Apache Geronimo
http://geronimo.apache.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: difference between reactor and multiproject

Posted by Feilpe Vieira Silva <fg...@gmail.com>.
can you provide me your reactor configuration file ?

I´m doing my configuration file right now, but I´m having some newby problems...


On Wed, 03 Nov 2004 15:35:29 -0700, Bruce Snyder <fe...@frii.com> wrote:
> What is the difference between reactor and multiproject?
> 
> I've got a project of about 12 or so subprojects and I'm building the
> whole thing with reactor goals. Is this correct or should I be using
> mutiproject?
> 
> Bruce
> --
> perl -e 'print
> unpack("u30","<0G)U8V4\\@4VYY9&5R\\"F9E<G)E=\\$\\!F<FEI+F-O;0\\`\\`");'
> 
> The Castor Project
> http://www.castor.org/
> 
> Apache Geronimo
> http://geronimo.apache.org/
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: difference between reactor and multiproject

Posted by Brett Porter <br...@gmail.com>.
multiproject is just a simpler (ie non-scripting) interface to the
reactor. In particular, it makes working with the site easier.

If you are happy using the reactor or have some different objectives,
then there is no need to use multiproject. OTOH, if your build maps to
the same objectives, using multiproject will mean you get a more
"standard" interface, and get improvements (though possibly new bugs!)
through upgrades in the future.

Cheers,
Brett

On Wed, 03 Nov 2004 15:35:29 -0700, Bruce Snyder <fe...@frii.com> wrote:
> What is the difference between reactor and multiproject?
> 
> I've got a project of about 12 or so subprojects and I'm building the
> whole thing with reactor goals. Is this correct or should I be using
> mutiproject?
> 
> Bruce
> --
> perl -e 'print
> unpack("u30","<0G)U8V4\\@4VYY9&5R\\"F9E<G)E=\\$\\!F<FEI+F-O;0\\`\\`");'
> 
> The Castor Project
> http://www.castor.org/
> 
> Apache Geronimo
> http://geronimo.apache.org/
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org