diff -Nru plugin-orig/plugin.jelly plugin/plugin.jelly
--- plugin-orig/plugin.jelly	2005-05-14 08:33:51.000000000 +0800
+++ plugin/plugin.jelly	2005-05-14 08:34:16.000000000 +0800
@@ -84,6 +84,18 @@
     
   </goal>
 
+  <!--==================================================================-->
+  <!-- Generate Eclipse  .classpath file for multiproject configuration -->
+  <!--==================================================================-->    
+  <goal name="eclipse:generate-mpclasspath"
+    description="Generate Eclipse .classpath file">
+  
+    <ant:echo>Creating ${basedir}/.classpath ...</ant:echo>                
+    <j:file name="${basedir}/.classpath" prettyPrint="true" outputMode="xml" xmlns="dummy">
+      <j:import file="${plugin.resources}/templates/mpclasspath.jelly" inherit="true"/>    
+    </j:file>
+    
+  </goal>
 
   <!--==================================================================-->
   <!-- Generate Eclipse mappings for Maven goals                        -->
diff -Nru plugin-orig/plugin-resources/templates/mpclasspath.jelly plugin/plugin-resources/templates/mpclasspath.jelly
--- plugin-orig/plugin-resources/templates/mpclasspath.jelly	1970-01-01 08:00:00.000000000 +0800
+++ plugin/plugin-resources/templates/mpclasspath.jelly	2005-05-14 08:34:16.000000000 +0800
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+ -->
+
+<j:whitespace
+  xmlns:j="jelly:core"
+  xmlns:ant="jelly:ant"
+  xmlns:maven="jelly:maven"
+  xmlns:u="jelly:util"
+  xmlns:eclipse="eclipse"
+  xmlns="dummy"
+  trim="true">
+<classpath>            
+  <!-- Add any generated source directories as seperate src directories -->
+  <u:available file="${maven.gen.src}">
+    <u:file var="genSrcRootDir" name="${maven.gen.src}"/>
+    <j:forEach var="genSrcDir" items="${genSrcRootDir.listFiles()}">
+      <maven:makeRelativePath var="srcDir" basedir="${basedir}" path="${genSrcDir}" separator="/"/>
+      <classpathentry kind="src" path="${srcDir}"/>  
+    </j:forEach>
+  </u:available>
+  <!-- prepare test output dir -->
+  <j:set var="testOutputDir" value="${maven.eclipse.test.output.dir}"/>
+  <j:if test="${empty testOutputDir}">
+    <maven:get var="testOutputDir" plugin='maven-test-plugin' property='maven.test.dest'/>      
+  </j:if>
+  <maven:makeRelativePath var="testOutputDir" basedir="${basedir}" path="${testOutputDir}"  separator="/"/>
+  <!-- collect project.xml recursively -->
+  <maven:reactor includes="**/project.xml" excludes="" basedir="."
+                 banner="Classpath" goals="" ignoreFailures="false" collectOnly="true"/>
+  <j:new var="libs" className="java.util.HashMap" useContextClassLoader="true"/>
+  <j:forEach var="prj" items="${reactorProjects}">
+    <!-- save library info -->
+    <j:forEach var="lib" items="${prj.artifacts}">
+      <!-- make sure it's a classpath dependency -->
+      <j:set var="isClasspath" value="${lib.dependency.isAddedToClasspath()}"/>
+        <j:if test="${isClasspath}">
+          <j:set var="dummy" value="${libs.put(lib.dependency.id,lib)}"/>
+        </j:if>
+    </j:forEach>
+    <!-- test for test source -->
+    <j:set var="testSrcX" value="${prj.build.unitTestSourceDirectory}X"/>
+    <j:if test="${testSrcX != 'X'}">
+      <maven:makeRelativePath var="testSrcDir" basedir="${basedir}" path="${prj.build.unitTestSourceDirectory}"  separator="/"/>
+    </j:if>
+    <!-- test for source -->
+    <j:set var="srcX" value="${prj.build.sourceDirectory}X"/>
+    <j:if test="${srcX != 'X'}">
+      <maven:makeRelativePath var="srcDir" basedir="${basedir}" path="${prj.build.sourceDirectory}" separator="/"/>
+      <j:set var="excluding" value=""/>
+      <j:forEach var="sm" items="${prj.build.sourceModifications}">
+        <ant:available property="classPresent" classname="${sm.className}"/>
+        <j:if test="${classPresent != 'true'}">
+          <j:forEach var="exclude" items="${sm.excludes}">
+            <j:choose>
+              <j:when test="${excluding.length() == 0}">
+                <j:set var="excluding" value="${exclude}"/>
+              </j:when>
+              <j:otherwise>
+                <j:set var="excluding" value="${excluding},${exclude}"/>
+              </j:otherwise>
+            </j:choose>
+          </j:forEach>
+        </j:if>
+      </j:forEach>
+      <classpathentry kind="src" path="${srcDir}" excluding="${excluding}" />
+      <!-- handle resources -->
+      <j:if test="${maven.eclipse.resources.addtoclasspath}">
+        <j:if test="${!prj.build.resources.isEmpty()}">
+          <j:forEach var="resource" items="${prj.build.resources}">
+            <j:set var="includingAsString" value="" />
+            <j:forEach var="res" items="${resource.includes}">
+              <j:set var="includingAsString" value="${includingAsString}${res}|" />
+            </j:forEach>
+            <j:set var="excludingAsString" value="" />
+            <j:forEach var="res" items="${resource.excludes}">
+              <j:set var="excludingAsString" value="${excludingAsString}${res}|" />
+            </j:forEach>        
+            <maven:makeRelativePath var="resourceDirectory" basedir="${basedir}" path="${resource.directory}" separator="/"/>
+            <!-- don't add duplicate directories -->
+            <j:if test="${!resourceDirectory.equals(srcDir) and (!resourceDirectory.equals(testSrcDir) or (testSrcX == 'X'))}">
+              <classpathentry kind="src" path="${resourceDirectory}" including="${includingAsString}" excluding="${excludingAsString}" />
+            </j:if>
+          </j:forEach>
+        </j:if>
+      </j:if>
+    </j:if>
+    <j:if test="${testSrcX != 'X'}">
+      <classpathentry kind="src" path="${testSrcDir}" output="${testOutputDir}"/>
+      <j:if test="${prj.build.unitTest != null}">
+        <j:if test="${maven.eclipse.resources.addtoclasspath}">
+          <j:if test="${!prj.build.unitTest.resources.isEmpty()}">
+            <j:forEach var="resource" items="${prj.build.unitTest.resources}">
+              <j:set var="includingAsString" value="" />
+              <j:forEach var="res" items="${resource.includes}">
+                <j:set var="includingAsString" value="${includingAsString}${res}|" />
+              </j:forEach>
+              <j:set var="excludingAsString" value="" />
+              <j:forEach var="res" items="${resource.excludes}">
+                <j:set var="excludingAsString" value="${excludingAsString}${res}|" />
+              </j:forEach>          
+              <maven:makeRelativePath var="resourceDirectory" basedir="${basedir}" path="${resource.directory}" separator="/"/>
+              <!-- don't add duplicate directories -->
+              <j:if test="${!resourceDirectory.equals(testSrcDir) and (!resourceDirectory.equals(srcDir) or (srcX == 'X'))}">
+                <classpathentry kind="src" path="${resourceDirectory}" output="${testOutputDir}" including="${includingAsString}" excluding="${excludingAsString}"/>
+              </j:if>          
+            </j:forEach>
+          </j:if>
+        </j:if>
+      </j:if>    
+    </j:if>
+  </j:forEach>
+  <maven:get var="cactusSrcDir" plugin='cactus-maven' property='cactus.src.dir' />
+  <u:available file="${cactusSrcDir}">
+    <j:set var="cactusSourcePresent" value="true"/>
+  </u:available>
+  <j:set var="ignoreCactus" value="false" />
+  <j:if test="${cactusSourcePresent == 'true'}">
+    <maven:makeRelativePath var="testSrcDir" basedir="${basedir}" path="${cactusSrcDir}"  separator="/"/>
+    <classpathentry kind="src" path="${testSrcDir}"/>
+
+    <maven:get var="cactusPlugin" plugin='cactus-maven' property='plugin' />
+    <j:set var="depVersion">${cactusPlugin.getDependency('cactus').getVersion()}</j:set>
+    <eclipse:write-classpath-entry groupId="cactus" artifactId="cactus" version="${depVersion}" relativePath="" />
+    <j:set var="ignoreCactus" value="true" />
+  </j:if>
+  <!-- Add the list of additional directories for the classpath from ${maven.eclipse.classpath.include}-->
+  <u:tokenize var="maven.eclipse.classpath.include.split" delim=",">${maven.eclipse.classpath.include}</u:tokenize>
+
+  <!-- add extra directories to be included in the classpath -->
+  <j:forEach var="res" items="${maven.eclipse.classpath.include.split}">
+    <maven:makeRelativePath var="srcDir" basedir="${basedir}" path="${res}"  separator="/"/>
+    <classpathentry kind="src" path="${srcDir}"/>
+  </j:forEach>
+  <!-- Here are the rules:
+       If the project has maven.eclipse.junit property, add that ver of junit
+       If the project has maven.eclipse.junit property and it is empty, don't add junit
+       If the project has junit dep, use that.
+       Use the test plugin version
+    -->
+  <j:set var="ignoreJUnit" value="false" />
+  <j:set var="verX" value="${maven.eclipse.junit}X"/>
+  <maven:get var="testPlugin" plugin='maven-test-plugin' property='plugin' />
+  <j:set var="depVersion">${testPlugin.getDependency('junit').getVersion()}</j:set>
+  <j:forEach var="prj" items="${reactorProjects}">
+    <j:if test="${prj.getDependency('junit') != null}">
+      <j:set var="depVersion" value="${prj.getDependency('junit').getVersion()}"/>
+    </j:if>  
+  </j:forEach>
+  <j:if test="${verX != 'X'}">
+    <j:set var="depVersion">${maven.eclipse.junit}</j:set>
+  </j:if>
+  <j:if test="${verX == 'noneX'}">
+    <j:set var="depVersion" value="none"/>  
+  </j:if>
+  <j:if test="${depVersion != 'none'}">
+    <eclipse:write-classpath-entry groupId="junit" artifactId="junit" version="${depVersion}" relativePath="" />
+    <j:set var="ignoreJUnit" value="true" />
+  </j:if>
+  
+  <u:tokenize var="conclasspaths" delim=",">${maven.eclipse.conclasspath}</u:tokenize>
+  <j:forEach var="conclasspath" items="${conclasspaths}" trim="true">
+    <classpathentry kind="con" path="${conclasspath}"/>
+  </j:forEach>  
+  <!-- write library info -->
+  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <j:forEach var="libKey" items="${libs.keySet()}">
+    <j:set var="lib" value="${libs.get(libKey)}"/>
+    <j:set var="eclipseDependency"
+           value="${lib.dependency.getProperty('eclipse.dependency')}"/>
+    <j:choose>
+      <j:when test="${eclipseDependency == 'true'}">
+        <classpathentry kind="src" path="/${lib.dependency.artifactId}"/>
+      </j:when>
+      <j:when test="${eclipseDependency == 'false'}">
+        <!-- ignore specific dependencies -->
+      </j:when>      
+      <j:when test="${lib.dependency.groupId == 'junit' and ignoreJUnit}">
+        <!-- ignoring junit dependency as we've already created it -->
+      </j:when>
+      <j:when test="${lib.dependency.groupId == 'cactus' and ignoreCactus}">
+        <!-- ignoring junit dependency as we've already created it -->
+      </j:when>
+      <j:otherwise>
+        <maven:makeRelativePath var="relativePath" basedir="${maven.repo.local}" path="${lib.path}" separator="/"/>
+        <eclipse:write-classpath-entry groupId="${lib.dependency.groupId}" artifactId="${lib.dependency.artifactId}"
+                                       version="${lib.dependency.version}" relativePath="${relativePath}"/>
+      </j:otherwise>
+    </j:choose>
+  </j:forEach>
+  <!-- add the unit test build directory so that any files generated via Maven are available -->  
+  
+  <j:set var="outputDir" value="${maven.eclipse.output.dir}"/>
+  <j:if test="${empty outputDir}">
+    <j:set var="outputDir" value="${maven.build.dest}"/>      
+  </j:if>
+  <maven:makeRelativePath var="outputDir" basedir="${basedir}" path="${outputDir}"  separator="/"/>
+  <classpathentry kind="output" path="${outputDir}"/>
+  
+</classpath>
+</j:whitespace>
