Hi gang,

I figured I'd have a go at publishing some stuff on http://incubator.apache.org/geronimo/. I found that typing 'maven site' consumes over 400mb of memory, then throws an OutOfMemoryException. I guess there's a 'few' leaks in maven :D

Anyway, to be able to build the site, I just redirected some functionality to an old-fashioned shell script. Works handy-dandy; it just highly inefficiently calls maven for each subproject. I also did some other tweaks. Patches attached for your consideration.

In short, here's how to get the mavenized website in place (under unix or cygwin; I'm sure its possible under windoze as well):

 # get geronimo and incubator-site cvs and apply patches
 cd ~/cvs
 cvs -z3 -d cvs.apache.org:/home/cvs co -P \
   incubator-geronimo incubator-site
 cd incubator-geronimo
 cvs -z3 up -Pd
 cp /tmp/site.sh .
 patch -p0 < /tmp/patch.txt
 chmod +x site.sh

 # build site
 ./site.sh
 maven site:tocvs
 cd ../incubator-site/build/projects/geronimo

 # add and commit
 cvsaddall # this is something like

# ssh -f -N cvs.apache.org
# for i in `find . -type d ! -name CVS`; do
#   cvs -q add $i
# done
# cvs -q add -R *
# kill %1
#
# I think cvsutils contains a script for handling this a little
# more gracefully

 cvs commit -m 'Publish website'

 # update the live site manually (optional)
 ssh cvs.apache.org
 umask 002 # don't forget this!
 cd /www/incubator.apache.org/projects/geronimo
 cvs -z3 up -Pd
 exit

I probably have the karma to do this, but it's probably best if some active geronimo committers do some QA and then get to grips on this. Once that happens, it should also be possible to automate and run a script like this once every night.

comments, thoughts?

cheers,

- LSD

#!/bin/bash
# build all the module websites. Actually, only does the coyping unless
# you specify "build" as the argument

if [[ "$1" == "build" ]]; then

echo Building module websites...
cd modules
for i in `find . -type d -maxdepth 1 -mindepth 1 ! -name CVS ! -name target 
-printf '%P\n'`; do
 if [[ -f $i/project.xml ]]; then
   echo - $i website
   cd $i
   maven site 2>&1 > ../../project-$i-site.log
   cd ..
 fi
done
cd ..

echo Building spec websites...
cd specs
for i in `find . -type d -maxdepth 1 -mindepth 1 ! -name CVS ! -name target 
-printf '%P\n'`; do
 if [[ -f $i/project.xml ]]; then
   echo - $i website
   cd $i
   maven site 2>&1 > ../../spec-$i-site.log
   cd ..
 fi
done
cd ..

# generate the main site
echo Building main site...
maven site 2>&1 > main-site.log

fi

# copy module docs to main site
echo Copy module websites...
cd modules
for i in `find . -type d -maxdepth 1 -mindepth 1 ! -name CVS ! -name target 
-printf '%P\n'`; do
 echo - $i
 if [[ -f $i/target/docs/index.html ]]; then
   mkdir -p ../target/docs/modules/$i
   cp -Rf $i/target/docs/* ../target/docs/modules/$i
 fi
done
cd ..

echo Copy Specs websites...
cd specs
for i in `find . -type d -maxdepth 1 -mindepth 1 ! -name CVS ! -name target 
-printf '%P\n'`; do
 echo - $i
 if [[ -f $i/target/docs/index.html ]]; then
   mkdir -p ../target/docs/specs/$i
   cp -Rf $i/target/docs/* ../target/docs/specs/$i
 fi
done
cd ..

Index: maven.xml
===================================================================
RCS file: /home/cvspublic/incubator-geronimo/maven.xml,v
retrieving revision 1.41
diff -u -r1.41 maven.xml
--- maven.xml   22 Oct 2003 02:31:13 -0000      1.41
+++ maven.xml   27 Oct 2003 19:30:57 -0000
@@ -433,13 +433,12 @@
         <!--<attainGoal name="maven-developer-activity-plugin:deregister"/>-->
     </postGoal>
 
-    <preGoal name="site">
+    <!--<preGoal name="site">
         <attainGoal name="modules:aggregate:site"/>
-    </preGoal>
+    </preGoal>-->
 
     <goal name="modules:aggregate:site" prereqs="modules:site"
         description="Copy the generated websites of all the modules into the 
root project">
-
         <ant:echo>Aggregating module site documentation...</ant:echo>
 
         <!-- Setup the target aggregation directory -->
Index: etc/maven.xml
===================================================================
RCS file: /home/cvspublic/incubator-geronimo/etc/maven.xml,v
retrieving revision 1.21
diff -u -r1.21 maven.xml
--- etc/maven.xml       1 Sep 2003 22:06:55 -0000       1.21
+++ etc/maven.xml       27 Oct 2003 19:30:58 -0000
@@ -1,337 +1,356 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- $Revision: 1.21 $ $Date: 2003/09/01 22:06:55 $ -->
-
-<project default="default"
-  xmlns:j="jelly:core"
-  xmlns:u="jelly:util"
-  xmlns:ant="jelly:ant"
-  xmlns:maven="jelly:maven"
-  xmlns:define="jelly:define"
-  xmlns:xdoclet="common:xdoclet"
-  xmlns:castor="common:castor">
-  
-  <!-- ================= -->
-  <!-- Global Properties -->
-  <!-- ================= -->
-  
-  <!-- Determine what the top-level project root is -->
-  <j:set var="project.root" 
value="${pom.parentBasedir().getParentFile().getCanonicalFile()}"/>
-  
-  <!-- Load the global properties -->
-  <ant:property file="${project.root}/etc/global.properties"/>
-  
-  
-  <!-- ==================== -->
-  <!-- Default Global Goals -->
-  <!-- ==================== -->
-  
-  <goal name="default">
-    <attainGoal name="jar:install"/>
-  </goal>
-  
-  <goal name="build">
-    <attainGoal name="default"/>
-  </goal>
-  
-  <goal name="rebuild">
-    <attainGoal name="clean"/>
-    <attainGoal name="build"/>
-  </goal>
-  
-  <!-- For testing -->
-  <goal name="hello">
-    <ant:echo>
-      H E L L O
-      ---------
-      Module Name: ${pom.name}
-    </ant:echo>
-  </goal>
-  
-  <!-- Remove classes which depend on changed files, so they will rebuild. -->
-  <preGoal name="java:compile">
-    <j:if test="${sourcesPresent}">
-      <ant:depend srcdir="${maven.compile.source}"
-                  destdir="${maven.build.dest}"
-                  dump="false"
-                  closure="false">
-        <j:forEach var="sm" items="${pom.build.sourceModifications}">
-          <ant:available property="classPresent" classname="${sm.className}"/>
-          <j:if test="${classPresent != 'true'}">
-            <j:forEach var="exclude" items="${sm.excludes}">
-              <ant:exclude name="${exclude}"/>
-            </j:forEach>
-            <j:forEach var="include" items="${sm.includes}">
-              <ant:include name="${include}"/>
-            </j:forEach>
-          </j:if>
-        </j:forEach>
-      </ant:depend>
-    </j:if>
-  </preGoal>
-  
-  <!-- Remove the log files -->
-  <goal name="clobber"
-        description="Removes all (non-repository installed) build generated 
files">
-        
-    <!-- Let clean:clean do some work first -->
-    <attainGoal name="clean:clean"/>
-    
-    <j:jelly xmlns="jelly:ant">
-      <delete quiet="false" failonerror="false">
-        <fileset dir="${basedir}">
-          <include name="maven.log"/>
-          <include name="velocity.log*"/>
-          <include name="junit*.properties"/>
-        </fileset>
-      </delete>
-    </j:jelly>
-  
-  </goal>
-  
-  <!-- Cleanse source files -->
-  <goal name="cleanse-sources"
-        description="Cleanse source files, removing tabs and translating CRLF 
-> LF">
-        
-    <j:scope xmlns="jelly:ant">
-      
-      <!-- Cleanse sources -->
-      <j:set var="srcdir" value="${basedir}/src/java"/>
-      <u:available file="">
-      <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="4">
-        <include name="**/*.java"/>
-      </fixcrlf>
-      <fixcrlf srcdir="${basedir}" eol="lf" eof="remove" tab="remove" 
tablength="2">
-        <include name="**/*.xml"/>
-        <include name="**/*.html"/>
-      </fixcrlf>
-      </u:available>
-      
-      <!-- Cleanse test sources -->
-      <j:set var="srcdir" value="${basedir}/src/test"/>
-      <u:available file="${srcdir}">
-        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="4">
-          <include name="**/*.java"/>
-          <include name="**/*.xml"/>
-          <include name="**/*.html"/>
-        </fixcrlf>
-        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="2">
-          <include name="**/*.xml"/>
-          <include name="**/*.html"/>
-        </fixcrlf>
-      </u:available>
-      
-      <!-- Cleanse xdocs -->
-      <j:set var="srcdir" value="${basedir}/src/xdocs"/>
-      <u:available file="${srcdir}">
-        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="2">
-          <include name="**/*.xml"/>
-          <include name="**/*.html"/>
-        </fixcrlf>
-      </u:available>
-      
-      <!-- Cleanse build files -->
-      <fixcrlf srcdir="." eol="lf" tab="remove" eof="remove" tablength="2">
-        <include name="project.xml"/>
-        <include name="maven.xml"/>
-      </fixcrlf>
-      
-      <!-- Cleanse scripts -->
-      <j:set var="srcdir" value="${basedir}/src/bin"/>
-      <u:available file="${srcdir}">
-        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="4">
-          <include name="**/*"/>
-        </fixcrlf>
-      </u:available>
-      
-    </j:scope>
-    
-  </goal>
-  
-  <!-- Check if the tests need to run -->
-  <preGoal name="test:test">
-    <j:if test="${context.getVariable('maven.test.force') == null}">
-      <j:set var="uptodatePropName" value="tests.uptodate"/>
-      <j:remove var="${uptodatePropName}"/>
-      <ant:mkdir dir="${basedir}/target/test-reports/"/>
-      <j:set var="uptodateFile" value="${basedir}/target/test-reports/tstamp"/>
-      
-      <ant:uptodate property="${uptodatePropName}"
-                targetfile="${uptodateFile}">
-        <ant:srcfiles dir="${basedir}/src/" includes="**/*"/>
-      </ant:uptodate>
-      
-      <j:if test="${context.getVariable(uptodatePropName) == 'true'}">
-        <ant:echo>NOTICE: Skipping tests; they seem to have passed 
already</ant:echo>
-        <j:set var="maven.test.skip" value="true"/>
-        <j:set var="unitTestSourcesPresent" value="false"/>
-      </j:if>
-    </j:if>
-  </preGoal>
-  
-  <!-- Update the timestamp of the last successful test -->
-  <postGoal name="test:test">
-    <j:if test="${context.getVariable('maven.test.failure') == null}">
-      <ant:touch file="${basedir}/target/test-reports/tstamp"/>
-    </j:if>
-  </postGoal>
-  
-  
-  <!-- =================== -->
-  <!-- XDoclet Integration -->
-  <!-- =================== -->
-  
-  <define:taglib uri="common:xdoclet">
-    
-    <define:tag name="jmxdoclet" xmlns="jelly:ant">
-      <j:if test="${srcdir == null}">
-        <fail>Missing required attribute: srcdir</fail>
-      </j:if>
-      <j:if test="${destdir == null}">
-        <fail>Missing required attribute: destdir</fail>
-      </j:if>
-      
-      <!-- Inlcude the generated sources in the Javac compile -->
-      <j:if test="${appendSet != null}">
-        <path id="xdoclet.jmx.compile.src.set" location="${destdir}"/>
-        <maven:addPath id="${appendSet}" refid="xdoclet.jmx.compile.src.set"/>
-      </j:if>
-      
-      <j:set var="uptodatePropName" value="xdoclet.jmx.uptodate"/>
-      <j:expr value="${context.setVariable(uptodatePropName, null)}"/>
-      <j:set var="uptodateFile" value="${destdir}/tstamp"/>
-      
-      <uptodate property="${uptodatePropName}"
-                targetfile="${uptodateFile}">
-        <srcfiles dir="${srcdir}" includes="**/*.java"/>
-      </uptodate>
-      
-      <j:if test="${context.getVariable(uptodatePropName) == null}">
-        <echo>Generating MBean interfaces...</echo>
-        
-        <!-- Load the jmxdoclet task -->
-        <taskdef name="jmxdoclet" 
classname="xdoclet.modules.jmx.JMXDocletTask">
-          <classpath>
-            <path refid="maven.dependency.classpath"/>
-          </classpath>
-        </taskdef>
-        
-        <!-- Where sources will be generated -->
-        <mkdir dir="${destdir}"/>
-        
-        <!-- Generate MBean interfaces -->
-        <jmxdoclet destDir="${destdir}" verbose="false">
-          
-          <fileset dir="${srcdir}">
-            <include name="**/*.java"/>
-          </fileset>
-          
-          <mbeaninterface 
templateFile="${project.root}/etc/xdoclet/template/jmx/mbean.xdt"/>
-        </jmxdoclet>
-        
-        <touch file="${uptodateFile}"/>
-      </j:if>
-      
-    </define:tag>
-  </define:taglib>
-  
-  <goal name="xdoclet:jmxdoclet:compile">
-    <xdoclet:jmxdoclet
-      srcdir="${basedir}/src/java"
-      destdir="${basedir}/target/xdoclet/jmx"
-      appendSet="maven.compile.src.set"/>
-  </goal>
-  
-  <goal name="xdoclet:jmxdoclet:test-compile">
-    <xdoclet:jmxdoclet
-      srcdir="${basedir}/src/test"
-      destdir="${basedir}/target/test-xdoclet/jmx"
-      appendSet="maven.test.compile.src.set"/>
-  </goal>
-  
-  
-  <!-- ===================================== -->
-  <!-- Castor Integration (Plugin is Broken) -->
-  <!-- ===================================== -->
-  
-  <define:taglib uri="common:castor">
-    
-    <define:tag name="generate" xmlns="jelly:ant">
-      <j:if test="${schema == null}">
-        <fail>Missing required attribute: schema</fail>
-      </j:if>
-      <j:if test="${package == null}">
-        <fail>Missing required attribute: package</fail>
-      </j:if>
-      <!-- types can be null -->
-      <!-- marshal can be null -->
-      <!-- binding can be null -->
-      
-      <j:set var="maven.castor.dest" value="${basedir}/target/castor/gen"/>
-      <mkdir dir="${maven.castor.dest}"/>
-      
-      <path id="maven.castor.compile.src.set"
-            location="${maven.castor.dest}"/>
-      <maven:addPath id="maven.compile.src.set"
-                     refid="maven.castor.compile.src.set"/>
-      
-      <u:file var="schemaFile" name="${schema}"/>
-      <j:if test="${binding != null}">
-        <u:file var="bindingFile" name="${binding}"/>
-      </j:if>
-      <j:set var="uptodatePropName" 
value="castor.schema.${schemaFile.name}.uptodate"/>
-      <j:set var="uptodateFile" 
value="${basedir}/target/castor/${schemaFile.name}.tstamp"/>
-      
-      <uptodate property="${uptodatePropName}"
-                targetfile="${uptodateFile}">
-        <!-- Evil hack to make uptodate work when I do not have a known 
basedir -->
-        <srcfiles dir="${schemaFile.parentFile.path}" 
includes="${schemaFile.name}"/>
-        <j:if test="${binding != null}">
-          <srcfiles dir="${bindingFile.parentFile.path}" 
includes="${bindingFile.name}"/>
-        </j:if>
-      </uptodate>
-      
-      <j:if test="${context.getVariable(uptodatePropName) != 'true'}">
-        <echo message="Generating sources for ${schema}"/>
-        
-        <path id="castor.classpath">
-          <path refid="maven.dependency.classpath"/>
-        </path>
-         
-        <java className="org.exolab.castor.builder.SourceGenerator"
-              failonerror="true"
-              fork="yes">
-          
-          <classpath refid="castor.classpath"/>
-          <arg value="-i"/>
-          <arg value="${schema}"/>
-          
-          <j:if test="${binding != null}">
-            <arg value="-binding-file"/>
-            <arg value="${binding}"/>
-          </j:if>
-          
-          <arg value="-package"/>
-          <arg value="${package}"/>
-          
-          <j:if test="${types != null}">
-            <arg value="-types"/>
-            <arg value="${types}"/>
-          </j:if>
-          
-          <j:if test="${marshal == 'false'}">
-            <arg value="-nomarshall"/>
-          </j:if>
-          
-          <arg value="-f"/>
-          <arg value="-dest"/>
-          <arg value="${maven.castor.dest}"/>
-        </java>
-        
-        <touch file="${uptodateFile}"/>
-      </j:if>
-      
-    </define:tag>
-  </define:taglib>
-
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Revision: 1.21 $ $Date: 2003/09/01 22:06:55 $ -->
+
+<project default="default"
+  xmlns:j="jelly:core"
+  xmlns:u="jelly:util"
+  xmlns:ant="jelly:ant"
+  xmlns:maven="jelly:maven"
+  xmlns:define="jelly:define"
+  xmlns:xdoclet="common:xdoclet"
+  xmlns:castor="common:castor">
+  
+  <!-- ================= -->
+  <!-- Global Properties -->
+  <!-- ================= -->
+  
+  <!-- Determine what the top-level project root is -->
+  <j:set var="project.root" 
value="${pom.parentBasedir().getParentFile().getCanonicalFile()}"/>
+  
+  <!-- Load the global properties -->
+  <ant:property file="${project.root}/etc/global.properties"/>
+  
+  
+  <!-- ==================== -->
+  <!-- Default Global Goals -->
+  <!-- ==================== -->
+  
+  <goal name="default">
+    <attainGoal name="jar:install"/>
+  </goal>
+  
+  <goal name="build">
+    <attainGoal name="default"/>
+  </goal>
+  
+  <goal name="rebuild">
+    <attainGoal name="clean"/>
+    <attainGoal name="build"/>
+  </goal>
+  
+  <!-- For testing -->
+  <goal name="hello">
+    <ant:echo>
+      H E L L O
+      ---------
+      Module Name: ${pom.name}
+    </ant:echo>
+  </goal>
+  
+  <!-- Remove classes which depend on changed files, so they will rebuild. -->
+  <preGoal name="java:compile">
+    <j:if test="${sourcesPresent}">
+      <ant:depend srcdir="${maven.compile.source}"
+                  destdir="${maven.build.dest}"
+                  dump="false"
+                  closure="false">
+        <j:forEach var="sm" items="${pom.build.sourceModifications}">
+          <ant:available property="classPresent" classname="${sm.className}"/>
+          <j:if test="${classPresent != 'true'}">
+            <j:forEach var="exclude" items="${sm.excludes}">
+              <ant:exclude name="${exclude}"/>
+            </j:forEach>
+            <j:forEach var="include" items="${sm.includes}">
+              <ant:include name="${include}"/>
+            </j:forEach>
+          </j:if>
+        </j:forEach>
+      </ant:depend>
+    </j:if>
+  </preGoal>
+  
+  <!-- Remove the log files -->
+  <goal name="clobber"
+        description="Removes all (non-repository installed) build generated 
files">
+        
+    <!-- Let clean:clean do some work first -->
+    <attainGoal name="clean:clean"/>
+    
+    <j:jelly xmlns="jelly:ant">
+      <delete quiet="false" failonerror="false">
+        <fileset dir="${basedir}">
+          <include name="maven.log"/>
+          <include name="velocity.log*"/>
+          <include name="junit*.properties"/>
+        </fileset>
+      </delete>
+    </j:jelly>
+  
+  </goal>
+  
+  <!-- Cleanse source files -->
+  <goal name="cleanse-sources"
+        description="Cleanse source files, removing tabs and translating CRLF 
-> LF">
+        
+    <j:scope xmlns="jelly:ant">
+      
+      <!-- Cleanse sources -->
+      <j:set var="srcdir" value="${basedir}/src/java"/>
+      <u:available file="">
+      <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="4">
+        <include name="**/*.java"/>
+      </fixcrlf>
+      <fixcrlf srcdir="${basedir}" eol="lf" eof="remove" tab="remove" 
tablength="2">
+        <include name="**/*.xml"/>
+        <include name="**/*.html"/>
+      </fixcrlf>
+      </u:available>
+      
+      <!-- Cleanse test sources -->
+      <j:set var="srcdir" value="${basedir}/src/test"/>
+      <u:available file="${srcdir}">
+        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="4">
+          <include name="**/*.java"/>
+          <include name="**/*.xml"/>
+          <include name="**/*.html"/>
+        </fixcrlf>
+        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="2">
+          <include name="**/*.xml"/>
+          <include name="**/*.html"/>
+        </fixcrlf>
+      </u:available>
+      
+      <!-- Cleanse xdocs -->
+      <j:set var="srcdir" value="${basedir}/src/xdocs"/>
+      <u:available file="${srcdir}">
+        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="2">
+          <include name="**/*.xml"/>
+          <include name="**/*.html"/>
+        </fixcrlf>
+      </u:available>
+      
+      <!-- Cleanse build files -->
+      <fixcrlf srcdir="." eol="lf" tab="remove" eof="remove" tablength="2">
+        <include name="project.xml"/>
+        <include name="maven.xml"/>
+      </fixcrlf>
+      
+      <!-- Cleanse scripts -->
+      <j:set var="srcdir" value="${basedir}/src/bin"/>
+      <u:available file="${srcdir}">
+        <fixcrlf srcdir="${srcdir}" eol="lf" eof="remove" tab="remove" 
tablength="4">
+          <include name="**/*"/>
+        </fixcrlf>
+      </u:available>
+      
+    </j:scope>
+    
+  </goal>
+  
+  <!-- Check if the tests need to run -->
+  <preGoal name="test:test">
+    <j:if test="${context.getVariable('maven.test.force') == null}">
+      <j:set var="uptodatePropName" value="tests.uptodate"/>
+      <j:remove var="${uptodatePropName}"/>
+      <ant:mkdir dir="${basedir}/target/test-reports/"/>
+      <j:set var="uptodateFile" value="${basedir}/target/test-reports/tstamp"/>
+      
+      <ant:uptodate property="${uptodatePropName}"
+                targetfile="${uptodateFile}">
+        <ant:srcfiles dir="${basedir}/src/" includes="**/*"/>
+      </ant:uptodate>
+      
+      <j:if test="${context.getVariable(uptodatePropName) == 'true'}">
+        <ant:echo>NOTICE: Skipping tests; they seem to have passed 
already</ant:echo>
+        <j:set var="maven.test.skip" value="true"/>
+        <j:set var="unitTestSourcesPresent" value="false"/>
+      </j:if>
+    </j:if>
+  </preGoal>
+  
+  <!-- Update the timestamp of the last successful test -->
+  <postGoal name="test:test">
+    <j:if test="${context.getVariable('maven.test.failure') == null}">
+      <ant:touch file="${basedir}/target/test-reports/tstamp"/>
+    </j:if>
+  </postGoal>
+  
+  
+  <!-- =================== -->
+  <!-- XDoclet Integration -->
+  <!-- =================== -->
+  
+  <define:taglib uri="common:xdoclet">
+    
+    <define:tag name="jmxdoclet" xmlns="jelly:ant">
+      <j:if test="${srcdir == null}">
+        <fail>Missing required attribute: srcdir</fail>
+      </j:if>
+      <j:if test="${destdir == null}">
+        <fail>Missing required attribute: destdir</fail>
+      </j:if>
+      
+      <!-- Inlcude the generated sources in the Javac compile -->
+      <j:if test="${appendSet != null}">
+        <path id="xdoclet.jmx.compile.src.set" location="${destdir}"/>
+        <maven:addPath id="${appendSet}" refid="xdoclet.jmx.compile.src.set"/>
+      </j:if>
+      
+      <j:set var="uptodatePropName" value="xdoclet.jmx.uptodate"/>
+      <j:expr value="${context.setVariable(uptodatePropName, null)}"/>
+      <j:set var="uptodateFile" value="${destdir}/tstamp"/>
+      
+      <uptodate property="${uptodatePropName}"
+                targetfile="${uptodateFile}">
+        <srcfiles dir="${srcdir}" includes="**/*.java"/>
+      </uptodate>
+      
+      <j:if test="${context.getVariable(uptodatePropName) == null}">
+        <echo>Generating MBean interfaces...</echo>
+        
+        <!-- Load the jmxdoclet task -->
+        <taskdef name="jmxdoclet" 
classname="xdoclet.modules.jmx.JMXDocletTask">
+          <classpath>
+            <path refid="maven.dependency.classpath"/>
+          </classpath>
+        </taskdef>
+        
+        <!-- Where sources will be generated -->
+        <mkdir dir="${destdir}"/>
+        
+        <!-- Generate MBean interfaces -->
+        <jmxdoclet destDir="${destdir}" verbose="false">
+          
+          <fileset dir="${srcdir}">
+            <include name="**/*.java"/>
+          </fileset>
+          
+          <mbeaninterface 
templateFile="${project.root}/etc/xdoclet/template/jmx/mbean.xdt"/>
+        </jmxdoclet>
+        
+        <touch file="${uptodateFile}"/>
+      </j:if>
+      
+    </define:tag>
+  </define:taglib>
+  
+  <goal name="xdoclet:jmxdoclet:compile">
+    <xdoclet:jmxdoclet
+      srcdir="${basedir}/src/java"
+      destdir="${basedir}/target/xdoclet/jmx"
+      appendSet="maven.compile.src.set"/>
+  </goal>
+  
+  <goal name="xdoclet:jmxdoclet:test-compile">
+    <xdoclet:jmxdoclet
+      srcdir="${basedir}/src/test"
+      destdir="${basedir}/target/test-xdoclet/jmx"
+      appendSet="maven.test.compile.src.set"/>
+  </goal>
+  
+  
+  <!-- ===================================== -->
+  <!-- Castor Integration (Plugin is Broken) -->
+  <!-- ===================================== -->
+  
+  <define:taglib uri="common:castor">
+    
+    <define:tag name="generate" xmlns="jelly:ant">
+      <j:if test="${schema == null}">
+        <fail>Missing required attribute: schema</fail>
+      </j:if>
+      <j:if test="${package == null}">
+        <fail>Missing required attribute: package</fail>
+      </j:if>
+      <!-- types can be null -->
+      <!-- marshal can be null -->
+      <!-- binding can be null -->
+      
+      <j:set var="maven.castor.dest" value="${basedir}/target/castor/gen"/>
+      <mkdir dir="${maven.castor.dest}"/>
+      
+      <path id="maven.castor.compile.src.set"
+            location="${maven.castor.dest}"/>
+      <maven:addPath id="maven.compile.src.set"
+                     refid="maven.castor.compile.src.set"/>
+      
+      <u:file var="schemaFile" name="${schema}"/>
+      <j:if test="${binding != null}">
+        <u:file var="bindingFile" name="${binding}"/>
+      </j:if>
+      <j:set var="uptodatePropName" 
value="castor.schema.${schemaFile.name}.uptodate"/>
+      <j:set var="uptodateFile" 
value="${basedir}/target/castor/${schemaFile.name}.tstamp"/>
+      
+      <uptodate property="${uptodatePropName}"
+                targetfile="${uptodateFile}">
+        <!-- Evil hack to make uptodate work when I do not have a known 
basedir -->
+        <srcfiles dir="${schemaFile.parentFile.path}" 
includes="${schemaFile.name}"/>
+        <j:if test="${binding != null}">
+          <srcfiles dir="${bindingFile.parentFile.path}" 
includes="${bindingFile.name}"/>
+        </j:if>
+      </uptodate>
+      
+      <j:if test="${context.getVariable(uptodatePropName) != 'true'}">
+        <echo message="Generating sources for ${schema}"/>
+        
+        <path id="castor.classpath">
+          <path refid="maven.dependency.classpath"/>
+        </path>
+         
+        <java className="org.exolab.castor.builder.SourceGenerator"
+              failonerror="true"
+              fork="yes">
+          
+          <classpath refid="castor.classpath"/>
+          <arg value="-i"/>
+          <arg value="${schema}"/>
+          
+          <j:if test="${binding != null}">
+            <arg value="-binding-file"/>
+            <arg value="${binding}"/>
+          </j:if>
+          
+          <arg value="-package"/>
+          <arg value="${package}"/>
+          
+          <j:if test="${types != null}">
+            <arg value="-types"/>
+            <arg value="${types}"/>
+          </j:if>
+          
+          <j:if test="${marshal == 'false'}">
+            <arg value="-nomarshall"/>
+          </j:if>
+          
+          <arg value="-f"/>
+          <arg value="-dest"/>
+          <arg value="${maven.castor.dest}"/>
+        </java>
+        
+        <touch file="${uptodateFile}"/>
+      </j:if>
+      
+    </define:tag>
+  </define:taglib>
+
+  <!-- ===================================== -->
+  <!-- Turn of most reports...it takes ages! -->
+  <!-- ===================================== -->
+  
+    <postGoal name="xdoc:register-reports">
+        <attainGoal name="maven-license-plugin:deregister"/>
+        <attainGoal name="maven-checkstyle-plugin:deregister"/>
+        <attainGoal name="maven-pmd-plugin:deregister"/>
+        <attainGoal name="maven-simian-plugin:deregister"/>
+        <attainGoal name="maven-jdepend-plugin:deregister"/>
+        <attainGoal name="maven-statcvs-plugin:deregister"/>
+        <!--<attainGoal name="maven-jxr-plugin:deregister"/>-->
+        <!--<attainGoal name="maven-javadoc-plugin:deregister"/>-->
+        <!--<attainGoal name="maven-junit-report-plugin:deregister"/>-->
+        <attainGoal name="maven-clover-plugin:deregister"/>
+        <attainGoal name="maven-changelog-plugin:deregister"/>
+        <attainGoal name="maven-file-activity-plugin:deregister"/>
+        <attainGoal name="maven-developer-activity-plugin:deregister"/>
+    </postGoal>
 </project>
Index: etc/global.properties
===================================================================
RCS file: /home/cvspublic/incubator-geronimo/etc/global.properties,v
retrieving revision 1.5
diff -u -r1.5 global.properties
--- etc/global.properties       1 Sep 2003 18:47:14 -0000       1.5
+++ etc/global.properties       27 Oct 2003 19:30:58 -0000
@@ -1,77 +1,77 @@
-##
-## $Revision: 1.5 $ $Date: 2003/09/01 18:47:14 $
-##
-
-#####################################################
-# Build and Deployment
-#####################################################
-
-maven.repo.remote=http://www.ibiblio.org/maven/
-
-maven.compile.source=1.4
-maven.compile.target=1.4
-maven.compile.deprecation=true
-maven.compile.debug=true
-maven.compile.optimize=true
-
-maven.junit.fork=true
-
-maven.simian.linecount=3
-
-# Force module tests to run, even if maven thinks they have passed
-#maven.test.force=true
-
-
-#####################################################
-# Properties related to project-site
-#####################################################
-
-maven.xdoc.date=left
-maven.xdoc.version=${pom.currentVersion}
-
-maven.linkcheck.enable=true
-
-maven.javadoc.links=http://java.sun.com/j2se/1.4.1/docs/api/
-maven.javadoc.source=1.4
-
-
-#####################################################
-# Site Colors
-#####################################################
-
-maven.ui.body.background=#FFFFFF
-maven.ui.body.foreground=#1F354D
-maven.ui.section.background=#A2B7C5
-maven.ui.section.foreground=#FFFFFF
-maven.ui.subsection.foreground=#1F354D
-maven.ui.subsection.background=#F2F5F7
-maven.ui.table.header.background=#E5E3DB
-maven.ui.table.header.foreground=#686868
-maven.ui.table.row.odd.foreground=#686868
-maven.ui.table.row.even.background=#F5F4F1
-maven.ui.table.row.odd.background=#F5F4F1
-maven.ui.table.row.even.foreground=#686868
-maven.ui.banner.background=#FFFFFF
-maven.ui.banner.foreground=#FFFFFF
-maven.ui.banner.border.top=#A2B7C5
-maven.ui.banner.border.bottom=#A2B7C5
-maven.ui.source.background=#FFFFFF
-maven.ui.source.foreground=#000000
-maven.ui.source.border.right=#A2B7C5
-maven.ui.source.border.top=#A2B7C5
-maven.ui.source.border.left=#A2B7C5
-maven.ui.source.border.bottom=#A2B7C5
-maven.ui.navcol.background=#F2F5F7
-maven.ui.navcol.background.ns4=#F2F5F7
-maven.ui.navcol.foreground=#000000
-maven.ui.navcol.foreground.ns4=#555
-maven.ui.navcol.border.top=#F2F5F7
-maven.ui.navcol.border.right=#A2B7C5
-maven.ui.navcol.border.bottom=#A2B7C5
-maven.ui.breadcrumbs.background=#D5E1E9
-maven.ui.breadcrumbs.foreground=#000000
-maven.ui.breadcrumbs.border.bottom=#A2B7C5
-maven.ui.breadcrumbs.border.top=#D5E1E9
-maven.ui.href.link=#1F354D
-maven.ui.href.link.active=#FF5A00
-maven.ui.href.link.selfref=#1F354D
+##
+## $Revision: 1.5 $ $Date: 2003/09/01 18:47:14 $
+##
+
+#####################################################
+# Build and Deployment
+#####################################################
+
+maven.repo.remote=http://www.ibiblio.org/maven/
+
+maven.compile.source=1.4
+maven.compile.target=1.4
+maven.compile.deprecation=true
+maven.compile.debug=true
+maven.compile.optimize=true
+
+maven.junit.fork=true
+
+maven.simian.linecount=3
+
+# Force module tests to run, even if maven thinks they have passed
+#maven.test.force=true
+
+
+#####################################################
+# Properties related to project-site
+#####################################################
+
+maven.xdoc.date=left
+maven.xdoc.version=DEV
+
+maven.linkcheck.enable=true
+
+maven.javadoc.links=http://java.sun.com/j2se/1.4.1/docs/api/
+maven.javadoc.source=1.4
+
+
+#####################################################
+# Site Colors
+#####################################################
+
+maven.ui.body.background=#FFFFFF
+maven.ui.body.foreground=#1F354D
+maven.ui.section.background=#A2B7C5
+maven.ui.section.foreground=#FFFFFF
+maven.ui.subsection.foreground=#1F354D
+maven.ui.subsection.background=#F2F5F7
+maven.ui.table.header.background=#E5E3DB
+maven.ui.table.header.foreground=#686868
+maven.ui.table.row.odd.foreground=#686868
+maven.ui.table.row.even.background=#F5F4F1
+maven.ui.table.row.odd.background=#F5F4F1
+maven.ui.table.row.even.foreground=#686868
+maven.ui.banner.background=#FFFFFF
+maven.ui.banner.foreground=#FFFFFF
+maven.ui.banner.border.top=#A2B7C5
+maven.ui.banner.border.bottom=#A2B7C5
+maven.ui.source.background=#FFFFFF
+maven.ui.source.foreground=#000000
+maven.ui.source.border.right=#A2B7C5
+maven.ui.source.border.top=#A2B7C5
+maven.ui.source.border.left=#A2B7C5
+maven.ui.source.border.bottom=#A2B7C5
+maven.ui.navcol.background=#F2F5F7
+maven.ui.navcol.background.ns4=#F2F5F7
+maven.ui.navcol.foreground=#000000
+maven.ui.navcol.foreground.ns4=#555
+maven.ui.navcol.border.top=#F2F5F7
+maven.ui.navcol.border.right=#A2B7C5
+maven.ui.navcol.border.bottom=#A2B7C5
+maven.ui.breadcrumbs.background=#D5E1E9
+maven.ui.breadcrumbs.foreground=#000000
+maven.ui.breadcrumbs.border.bottom=#A2B7C5
+maven.ui.breadcrumbs.border.top=#D5E1E9
+maven.ui.href.link=#1F354D
+maven.ui.href.link.active=#FF5A00
+maven.ui.href.link.selfref=#1F354D

Reply via email to