> The other question is, how do I get the sub-projects, if they 
> are built in this way, to share a generated site? I have only 
> one project site, for the main project, but I'd like all the 
> sub-projects to be listed in the main one, and have links to 
> them as well.

I use beta 10, since it seems to be stable enough for me. It had a
semi-working version of multiproject. I also wanted to do the single site
thing, so I wrote a goal to build subprojects (as part of a custom plugin,
actually). 

One thing needs explaining: in our setup, we put all subprojects into a
"modules" directory at the project root. Thus, to detect if a project has
subprojects, we just check for the existence of this directory (the
ant:available tag below). You'll need to customize that to you own layout
(or just eliminate the check altogether). The idea of the goal was to be
able to run a single goal that would work for projects both with and without
subprojects.

Also, due to some weirdness with reactor (at least in beta 10), the root
project must exclude itself from the reactor processing (i.e.
maven.multiproject.excludes=project.xml). This may be fixed by now.

Run this on the root project:
  
   <goal name="tag:site" description="Site generation that detects
multiproject builds">
      <ant:property name="maven.docs.dest" value="${maven.build.dir}/docs"/>
      <ant:mkdir dir="${maven.docs.dest}"/>
      <ant:available file="modules" type="dir" property="hasModules"/>
      <j:if test="${hasModules}">
         <!-- Do something .close. to what multiproject:site does, but
without
             overwriting the index files. And without cleaning. -->
         <maven:reactor
            basedir="."
            includes="**/project.xml"
            excludes="${maven.multiproject.excludes}"
            postProcessing="true"
            goals="site:generate"
            ignoreFailures="false"
         />
      </j:if>

        <-- 
      <attainGoal name="site:generate"/>

      <j:if test="${hasModules}">
         <!-- copy each project over into ${maven.docs.dest} -->
         <j:forEach var="reactorProject" items="${reactorProjects}">
            <j:set var="directory"
value="${maven.docs.dest}/${reactorProject.artifactId}"/>
            <mkdir dir="${directory}"/>
            <j:set var="fromDir" 
 
value="${reactorProject.getPluginContext('maven-xdoc-plugin').getVariable('m
aven.docs.dest')}"/>
            <ant:move toDir="${directory}">
               <fileset dir="${fromDir}"/>
            </ant:move>
         </j:forEach>
      </j:if>
   </goal>
 

The end result is that the subproject documentation is moved as
subdirectories within the root projects target/docs directory.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to