You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/11/09 19:19:31 UTC

svn commit: r473001 - in /maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin: ./ src/main/java/org/apache/maven/plugin/eclipse/ src/main/java/org/apache/maven/plugin/eclipse/writers/ src/main/java/org/apache/maven/plugin/eclipse/writers/rad/ src/...

Author: jdcasey
Date: Thu Nov  9 10:19:31 2006
New Revision: 473001

URL: http://svn.apache.org/viewvc?view=rev&rev=473001
Log:
Got existing tests working without memory errors using maven-invoker...just need to get the rad tests working now.

Modified:
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/pom.xml
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/RadPlugin.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadEjbClasspathWriter.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginMasterProjectTest.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/RadPluginTest.java
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-22/pom.xml
    maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-23/pom.xml

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/pom.xml?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/pom.xml (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/pom.xml Thu Nov  9 10:19:31 2006
@@ -36,6 +36,12 @@
             <exclude>**/EclipsePluginMasterProjectTest.java</exclude>
             <exclude>**/InstallPluginsMojoTest.java</exclude>
           </excludes>
+          <systemProperties>
+            <property>
+              <name>maven.home</name>
+              <value>${env.M2_HOME}</value>
+            </property>
+          </systemProperties>
         </configuration>
       </plugin>
     </plugins>
@@ -56,6 +62,12 @@
       <groupId>easymock</groupId>
       <artifactId>easymock</artifactId>
       <version>1.2_Java1.3</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-invoker</artifactId>
+      <version>1.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java Thu Nov  9 10:19:31 2006
@@ -21,7 +21,10 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Set;
 import java.util.TreeSet;
 
@@ -444,7 +447,7 @@
         checkDeprecations();
 
         ready = validate();
-        
+
         String packaging = executedProject.getPackaging();
 
         // TODO: Why are we using project in some places, and executedProject in others??
@@ -457,7 +460,7 @@
         setupExtras();
 
         parseConfigurationOptions();
-        
+
         // defaults
         if ( projectnatures == null )
         {
@@ -473,9 +476,14 @@
         {
             fillDefaultBuilders( packaging );
         }
+        else
+        {
+            convertBuildCommandList( buildcommands );
+        }
 
         if ( additionalBuildcommands != null )
         {
+            convertBuildCommandList( additionalBuildcommands );
             buildcommands.addAll( additionalBuildcommands );
         }
 
@@ -492,6 +500,23 @@
         return ready;
     }
 
+    protected void convertBuildCommandList( List commands )
+    {
+        if ( commands != null )
+        {
+            for ( ListIterator i = commands.listIterator(); i.hasNext(); )
+            {
+                Object command = i.next();
+
+                if ( command instanceof String )
+                {
+                    command = new BuildCommand( (String) command );
+                    i.set( command );
+                }
+            }
+        }
+    }
+
     private void parseConfigurationOptions()
     {
         if ( "R7".equalsIgnoreCase( wtpversion ) ) //$NON-NLS-1$
@@ -513,6 +538,7 @@
     }
 
     protected void setupExtras()
+        throws MojoExecutionException
     {
         // extension point.
     }
@@ -563,7 +589,13 @@
         {
             eclipseProjectDir = executedProject.getFile().getParentFile();
         }
-        else if ( !eclipseProjectDir.equals( executedProject.getFile().getParentFile() ) )
+        
+        if ( !eclipseProjectDir.exists() && !eclipseProjectDir.mkdirs() )
+        {
+            throw new MojoExecutionException( Messages.getString( "EclipsePlugin.cantcreatedir", eclipseProjectDir ) ); //$NON-NLS-1$
+        }
+        
+        if ( !eclipseProjectDir.equals( executedProject.getFile().getParentFile() ) )
         {
             if ( !eclipseProjectDir.isDirectory() )
             {
@@ -608,29 +640,11 @@
     public void writeConfiguration( IdeDependency[] deps )
         throws MojoExecutionException
     {
-        File projectBaseDir = executedProject.getFile().getParentFile();
-
-        // build a list of UNIQUE source dirs (both src and resources) to be
-        // used in classpath and wtpmodules
-        EclipseSourceDir[] sourceDirs = buildDirectoryList( executedProject, eclipseProjectDir, buildOutputDirectory );
-
-        EclipseWriterConfig config = new EclipseWriterConfig();
-        config.setBuildCommands( buildcommands );
-        config.setBuildOutputDirectory( buildOutputDirectory );
-        config.setClasspathContainers( classpathContainers );
-        config.setDeps( deps );
-        config.setEclipseProjectDirectory( eclipseProjectDir );
-        config.setLocalRepository( localRepository );
-        config.setManifestFile( manifest );
-        config.setPde( pde );
-        config.setProject( project );
-        config.setProjectBaseDir( projectBaseDir );
-        config.setProjectnatures( projectnatures );
-        config.setSourceDirs( sourceDirs );
+        EclipseWriterConfig config = createEclipseWriterConfig( deps );
 
         // NOTE: This could change the config!
         writeExtraConfiguration( config );
-        
+
         if ( wtpVersionFloat == 0.7f )
         {
             new EclipseWtpmodulesWriter().init( getLog(), config ).write();
@@ -694,6 +708,57 @@
                                            project.getArtifactId(), eclipseProjectDir.getAbsolutePath() } ) );
     }
 
+    protected EclipseWriterConfig createEclipseWriterConfig( IdeDependency[] deps )
+        throws MojoExecutionException
+    {
+        File projectBaseDir = executedProject.getFile().getParentFile();
+
+        // build a list of UNIQUE source dirs (both src and resources) to be
+        // used in classpath and wtpmodules
+        EclipseSourceDir[] sourceDirs = buildDirectoryList( executedProject, eclipseProjectDir, buildOutputDirectory );
+
+        EclipseWriterConfig config = new EclipseWriterConfig();
+
+        // TODO: add mojo param 'addVersionToProjectName' and if set append
+        // -version to the project name.
+        config.setEclipseProjectName( project.getArtifactId() );
+        
+        Set convertedBuildCommands = new LinkedHashSet();
+        
+        if ( buildcommands != null )
+        {
+            for ( Iterator it = buildcommands.iterator(); it.hasNext(); )
+            {
+                Object cmd = it.next();
+                
+                if ( cmd instanceof BuildCommand )
+                {
+                    convertedBuildCommands.add( (BuildCommand) cmd );
+                }
+                else
+                {
+                    convertedBuildCommands.add( new BuildCommand( (String) cmd ) );
+                }
+            }
+        }
+        
+        config.setBuildCommands( new LinkedList( convertedBuildCommands ) );
+
+        config.setBuildOutputDirectory( buildOutputDirectory );
+        config.setClasspathContainers( classpathContainers );
+        config.setDeps( deps );
+        config.setEclipseProjectDirectory( eclipseProjectDir );
+        config.setLocalRepository( localRepository );
+        config.setManifestFile( manifest );
+        config.setPde( pde );
+        config.setProject( project );
+        config.setProjectBaseDir( projectBaseDir );
+        config.setProjectnatures( projectnatures );
+        config.setSourceDirs( sourceDirs );
+
+        return config;
+    }
+
     /**
      * Write any extra configuration information for the Eclipse project. This is an extension
      * point, called before the main configurations are written.
@@ -768,33 +833,33 @@
 
         if ( wtpVersionFloat == 0.7f )
         {
-            buildcommands.add( BUILDER_WST_COMPONENT_STRUCTURAL ); // WTP 0.7 builder
+            buildcommands.add( new BuildCommand( BUILDER_WST_COMPONENT_STRUCTURAL ) ); // WTP 0.7 builder
         }
 
         if ( isJavaProject )
         {
-            buildcommands.add( BUILDER_JDT_CORE_JAVA );
+            buildcommands.add( new BuildCommand( BUILDER_JDT_CORE_JAVA ) );
         }
 
         if ( wtpVersionFloat >= 1.5f )
         {
-            buildcommands.add( BUILDER_WST_FACET ); // WTP 1.5 builder
+            buildcommands.add( new BuildCommand( BUILDER_WST_FACET ) ); // WTP 1.5 builder
         }
 
         if ( wtpVersionFloat >= 0.7f )
         {
-            buildcommands.add( BUILDER_WST_VALIDATION ); // WTP 0.7/1.0 builder
+            buildcommands.add( new BuildCommand( BUILDER_WST_VALIDATION ) ); // WTP 0.7/1.0 builder
         }
 
         if ( wtpVersionFloat == 0.7f )
         {
-            buildcommands.add( BUILDER_WST_COMPONENT_STRUCTURAL_DEPENDENCY_RESOLVER ); // WTP 0.7 builder
+            buildcommands.add( new BuildCommand( BUILDER_WST_COMPONENT_STRUCTURAL_DEPENDENCY_RESOLVER ) ); // WTP 0.7 builder
         }
 
         if ( pde )
         {
-            buildcommands.add( BUILDER_PDE_MANIFEST );
-            buildcommands.add( BUILDER_PDE_SCHEMA );
+            buildcommands.add( new BuildCommand( BUILDER_PDE_MANIFEST ) );
+            buildcommands.add( new BuildCommand( BUILDER_PDE_SCHEMA ) );
         }
     }
 
@@ -830,8 +895,8 @@
         return (EclipseSourceDir[]) directories.toArray( new EclipseSourceDir[directories.size()] );
     }
 
-    private void extractSourceDirs( Set directories, List sourceRoots, File basedir, File projectBaseDir,
-                                           boolean test, String output )
+    private void extractSourceDirs( Set directories, List sourceRoots, File basedir, File projectBaseDir, boolean test,
+                                    String output )
         throws MojoExecutionException
     {
         for ( Iterator it = sourceRoots.iterator(); it.hasNext(); )
@@ -844,7 +909,7 @@
                 String sourceRoot = IdeUtils.toRelativeAndFixSeparator( projectBaseDir, sourceRootFile, !projectBaseDir
                     .equals( basedir ) );
 
-                directories.add( new EclipseSourceDir( sourceRoot, output, false, test, null, null ) );
+                directories.add( new EclipseSourceDir( sourceRoot, output, false, test, null, null, false ) );
             }
         }
     }
@@ -856,9 +921,9 @@
         for ( Iterator it = resources.iterator(); it.hasNext(); )
         {
             Resource resource = (Resource) it.next();
-            
+
             System.out.println( "Processing resource dir: " + resource.getDirectory() );
-            
+
             String includePattern = null;
             String excludePattern = null;
 
@@ -902,9 +967,10 @@
                 output = IdeUtils.toRelativeAndFixSeparator( projectBaseDir, outputFile, false );
             }
 
-            System.out.println( "Adding eclipse source dir: { " + resourceDir + ", " + output + ", true, " + test + ", " + includePattern + ", " + excludePattern + " }." );
-            
-            directories.add( new EclipseSourceDir( resourceDir, output, true, test, includePattern, excludePattern ) );
+            System.out.println( "Adding eclipse source dir: { " + resourceDir + ", " + output + ", true, " + test
+                + ", " + includePattern + ", " + excludePattern + " }." );
+
+            directories.add( new EclipseSourceDir( resourceDir, output, true, test, includePattern, excludePattern, resource.isFiltering() ) );
         }
     }
 

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/RadPlugin.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/RadPlugin.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/RadPlugin.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/RadPlugin.java Thu Nov  9 10:19:31 2006
@@ -11,6 +11,7 @@
 import org.apache.maven.plugin.eclipse.writers.rad.RadManifestWriter;
 import org.apache.maven.plugin.eclipse.writers.rad.RadWebSettingsWriter;
 import org.apache.maven.plugin.eclipse.writers.rad.RadWebsiteConfigWriter;
+import org.apache.maven.plugin.ide.IdeDependency;
 import org.apache.maven.project.MavenProject;
 
 import java.io.File;
@@ -108,6 +109,8 @@
     protected void writeExtraConfiguration( EclipseWriterConfig config )
         throws MojoExecutionException
     {
+        super.writeExtraConfiguration( config );
+        
         if ( isJavaProject )
         {
             // special case must be done first because it can add stuff to the classpath that will be 
@@ -132,9 +135,12 @@
      * make room for a Manifest file. use a generated resource for JARS and for
      * WARS use the manifest in the webapp/meta-inf directory.
      */
-    private void addManifestResource()
+    private void addManifestResource( EclipseWriterConfig config )
     {
-        if ( new RadManifestWriter().getMetaInfBaseDirectory( getExecutedProject() ) != null )
+        RadManifestWriter manifestWriter = new RadManifestWriter();
+        manifestWriter.init( getLog(), config );
+        
+        if ( manifestWriter.getMetaInfBaseDirectory( getExecutedProject() ) != null )
         {
             return;
         }
@@ -177,6 +183,8 @@
      */
     protected void fillDefaultBuilders( String packaging )
     {
+        super.fillDefaultBuilders( packaging );
+        
         ArrayList buildcommands = new ArrayList();
         if ( Constants.PROJECT_PACKAGING_EAR.equals( packaging ) )
         {
@@ -220,6 +228,8 @@
      */
     protected void fillDefaultNatures( String packaging )
     {
+        super.fillDefaultNatures( packaging );
+        
         ArrayList projectnatures = new ArrayList();
         if ( Constants.PROJECT_PACKAGING_EAR.equals( packaging ) )
         {
@@ -285,8 +295,17 @@
         return false;
     }
 
+    /**
+     * WARNING: The manifest resources added here will not have the benefit of the dependencies
+     * of the project, since that's not provided in the setup() apis...
+     */
     protected void setupExtras()
+        throws MojoExecutionException
     {
-        addManifestResource();
+        super.setupExtras();
+        
+        EclipseWriterConfig config = createEclipseWriterConfig( new IdeDependency[0] );
+
+        addManifestResource( config );
     }
 }

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java Thu Nov  9 10:19:31 2006
@@ -143,7 +143,7 @@
 
         for ( Iterator iter = config.getBuildCommands().iterator(); iter.hasNext(); )
         {
-            buildCommands.add( iter.next() );
+            buildCommands.add( (BuildCommand) iter.next() );
         }
 
         Writer w;

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadEjbClasspathWriter.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadEjbClasspathWriter.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadEjbClasspathWriter.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadEjbClasspathWriter.java Thu Nov  9 10:19:31 2006
@@ -78,6 +78,11 @@
         {
             new File( config.getEclipseProjectDirectory(), TARGET_WEBSPHERE_CLASSES ).mkdirs();
             File classpathFile = new File( config.getEclipseProjectDirectory(), CLASSPATH_FILE );
+            
+            if ( !classpathFile.exists() )
+            {
+                return;
+            }
             FileWriter w;
             Xpp3Dom classpath = readXMLFile( classpathFile );
             Xpp3Dom[] children = classpath.getChildren();

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java Thu Nov  9 10:19:31 2006
@@ -25,7 +25,11 @@
 /**
  * Create or adapt the manifest files for the RAD6 runtime dependencys.
  * attention these will not be used for the real ear these are just to get the
- * runtime enviorment using the maven dependencys.
+ * runtime enviorment using the maven dependencies.
+ * 
+ * WARNING: The manifest resources added here will not have the benefit of the dependencies
+ * of the project, since that's not provided in the setup() apis, one of the locations from which
+ * this writer is used in the RadPlugin.
  * 
  * @author <a href="mailto:nir@cfc.at">Richard van Nieuwenhoven </a>
  */

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java Thu Nov  9 10:19:31 2006
@@ -15,30 +15,48 @@
  */
 package org.apache.maven.plugin.eclipse;
 
-import org.apache.maven.cli.ConsoleDownloadMonitor;
-import org.apache.maven.embedder.MavenEmbedder;
-import org.apache.maven.embedder.MavenEmbedderConsoleLogger;
-import org.apache.maven.embedder.PlexusLoggerAdapter;
-import org.apache.maven.monitor.event.DefaultEventMonitor;
-import org.apache.maven.monitor.event.EventMonitor;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.installer.ArtifactInstallationException;
+import org.apache.maven.artifact.installer.ArtifactInstaller;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.model.Build;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
 import org.apache.maven.plugin.ide.IdeUtils;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.ProjectArtifactMetadata;
+import org.apache.maven.shared.invoker.DefaultInvocationRequest;
+import org.apache.maven.shared.invoker.DefaultInvoker;
+import org.apache.maven.shared.invoker.InvocationRequest;
+import org.apache.maven.shared.invoker.Invoker;
+import org.apache.maven.shared.invoker.MavenInvocationException;
+import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.archiver.jar.JarArchiver;
-import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.FileInputStream;
+import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 
@@ -51,90 +69,279 @@
     extends PlexusTestCase
 {
 
+    private static Invoker mavenInvoker = new DefaultInvoker();
+
     /**
      * The embedder.
      */
-    protected MavenEmbedder maven;
+    //    protected MavenEmbedder maven;
+    private ArtifactRepository localRepository;
+
+    private MavenProjectBuilder projectBuilder;
 
     /**
      * Test repository directory.
      */
-    protected File localRepositoryDir = getTestFile( "target/test-classes/m2repo" );
-    
+    protected static final File LOCAL_REPO_DIR = getTestFile( "target/test-classes/m2repo" );
+
     /**
-     * Location in test localRepository for staging the plugin jar.
+     * Group-Id for running test builds.
      */
-    protected File pluginFile = new File( localRepositoryDir, "/org/apache/maven/plugins/maven-eclipse-plugin/current/maven-eclipse-plugin-current.jar" );
-    
+    protected static final String GROUP_ID = "org.apache.maven.plugins";
+
     /**
-     * Location in test localRepository for staging the plugin metadata.
+     * Artifact-Id for running test builds.
      */
-    protected File metadataFile = new File( localRepositoryDir, "/org/apache/maven/plugins/maven-eclipse-plugin/maven-metadata-local.xml" );
+    protected static final String ARTIFACT_ID = "maven-eclipse-plugin";
 
     /**
-     * Location in test localRepository for staging the plugin POM.
+     * Version under which the plugin was installed to the test-time local repository for running 
+     * test builds.
      */
-    protected File pomFile = new File( localRepositoryDir, "/org/apache/maven/plugins/maven-eclipse-plugin/current/maven-eclipse-plugin-current.pom" );
+    protected static final String VERSION = "test";
     
+    private static String mvnHome;
+
+    private static boolean installed = false;
+
     /**
      * @see org.codehaus.plexus.PlexusTestCase#setUp()
      */
     protected void setUp()
         throws Exception
     {
+        synchronized( AbstractEclipsePluginTestCase.class )
+        {
+            if ( mvnHome == null )
+            {
+                mvnHome = System.getProperty( "maven.home" );
+                
+                if ( mvnHome == null )
+                {
+                    Properties envVars = CommandLineUtils.getSystemEnvVars();
+                    
+                    mvnHome = envVars.getProperty( "M2_HOME" );
+                }
+            }
+            
+            if ( mvnHome != null )
+            {
+                mavenInvoker.setMavenHome( new File( mvnHome ) );
+            }
+        }
+        
+        //        this.maven = new MavenEmbedder();
+        //        this.maven.setClassLoader( Thread.currentThread().getContextClassLoader() );
+        //        this.maven.setLogger( new MavenEmbedderConsoleLogger() );
+        //        this.maven.setLocalRepositoryDirectory( LOCAL_REPO_DIR );
+        //        this.maven.setOffline( true );
+        //        this.maven.setInteractiveMode( false );
+        //        this.maven.start();
 
-        this.maven = new MavenEmbedder();
-        this.maven.setClassLoader( Thread.currentThread().getContextClassLoader() );
-        this.maven.setLogger( new MavenEmbedderConsoleLogger() );
-        this.maven.setLocalRepositoryDirectory( localRepositoryDir );
-        this.maven.setOffline( true );
-        this.maven.setInteractiveMode( false );
-        this.maven.start();
+        super.setUp();
 
-        stagePlugin();
+        projectBuilder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE );
+        createLocalArtifactRepositoryInstance();
 
-        super.setUp();
+        // We need to call super.setup() first, to ensure that we can use the PlexusContainer 
+        // initialized in the parent class.
+        installPluginInTestLocalRepository();
     }
 
-    protected void stagePlugin()
-        throws ArchiverException, IOException
+    protected void createLocalArtifactRepositoryInstance()
+        throws Exception
     {
-        pluginFile.getParentFile().mkdirs();
-        
-        JarArchiver jarArchiver = new JarArchiver();
-        jarArchiver.setDestFile( pluginFile );
-        jarArchiver.addDirectory( new File( "target/classes" ) );
+        ArtifactRepositoryFactory repoFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+        ArtifactRepositoryLayout defaultLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,
+                                                                                    "default" );
+
+        localRepository = repoFactory.createArtifactRepository( "local", LOCAL_REPO_DIR.toURL().toExternalForm(),
+                                                                defaultLayout, null, null );
+
+    }
+
+    protected void installPluginInTestLocalRepository()
+        throws Exception
+    {
+        // synchronizing just in case we try to parallelize later...
+        synchronized ( AbstractEclipsePluginTestCase.class )
+        {
+            if ( !installed )
+            {
+                System.out.println( "\n\n\n\n*** Installing test-version of the Eclipse plugin to: " + LOCAL_REPO_DIR + "***\n\n\n\n" );
+
+                ArtifactInstaller installer = (ArtifactInstaller) lookup( ArtifactInstaller.ROLE );
+                ArtifactFactory factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+
+                Artifact artifact = factory.createArtifact( GROUP_ID, ARTIFACT_ID, VERSION, null, "maven-plugin" );
+
+                File pomFile = manglePom();
+                File artifactFile = new File( "target/" + ARTIFACT_ID + "-" + VERSION + ".jar" );
+                
+                artifact.addMetadata( new ProjectArtifactMetadata( artifact, pomFile ) );
+
+                Properties properties = new Properties();
+//                properties.setProperty( "maven.test.skip", "true" );
+                
+                List goals = new ArrayList();
+                goals.add( "package" );
+                
+                executeMaven( pomFile, properties, goals, false );
+                
+                artifact.setFile( artifactFile );
+
+                String localPath = localRepository.pathOf( artifact );
+
+                File destination = new File( localRepository.getBasedir(), localPath );
+                if ( !destination.getParentFile().exists() )
+                {
+                    destination.getParentFile().mkdirs();
+                }
+
+                System.out.println( "Installing " + artifactFile.getPath() + " to " + destination );
+
+                installer.install( artifactFile, artifact, localRepository );
+
+                installLocalParentSnapshotPoms( pomFile, installer, factory, localRepository );
+
+                installed = true;
+            }
+        }
+    }
+
+    private File manglePom() throws IOException, XmlPullParserException
+    {
+        File input = new File( "pom.xml" );
         
-        jarArchiver.createArchive();
+        File output = new File( "pom-test.xml" );
+        output.deleteOnExit();
         
+        FileReader reader = null;
         FileWriter writer = null;
+        
         try
         {
-            metadataFile.getParentFile().mkdirs();
+            reader = new FileReader( input );
+            writer = new FileWriter( output );
+            
+            Model model = new MavenXpp3Reader().read( reader );
+            
+            model.setVersion( "test" );
+            
+            Build build = model.getBuild();
+            if ( build == null )
+            {
+                build = new Build();
+                model.setBuild( build );
+            }
             
-            writer = new FileWriter( metadataFile );
+            List plugins = build.getPlugins();
+            Plugin plugin = null;
+            for ( Iterator iter = plugins.iterator(); iter.hasNext(); )
+            {
+                Plugin plug = (Plugin) iter.next();
+                
+                if ( "maven-surefire-plugin".equals( plug.getArtifactId() ) )
+                {
+                    plugin = plug;
+                    break;
+                }
+            }
             
-            writer.write( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
-                    "\n<metadata>" +
-                    "\n  <groupId>org.apache.maven.plugins</groupId>" +
-                    "\n  <artifactId>maven-eclipse-plugin</artifactId>" +
-                    "\n  <versioning>" +
-                    "\n    <latest>current</latest>" +
-                    "\n    <release>current</release>" +
-                    "\n    <versions>" +
-                    "\n      <version>current</version>" +
-                    "\n    </versions>" +
-                    "\n    <lastUpdated>" + System.currentTimeMillis() + "</lastUpdated>" +
-                    "\n  </versioning>" +
-                    "\n</metadata>" );
+            if ( plugin == null )
+            {
+                plugin = new Plugin();
+                plugin.setArtifactId( "maven-surefire-plugin" );
+                build.addPlugin( plugin );
+            }
+            
+            Xpp3Dom configDom = (Xpp3Dom) plugin.getConfiguration();
+            if ( configDom == null )
+            {
+                configDom = new Xpp3Dom( "configuration" );
+                plugin.setConfiguration( configDom );
+            }
+            
+            Xpp3Dom skipDom = new Xpp3Dom( "skip" );
+            skipDom.setValue( "true" );
+            
+            configDom.addChild( skipDom );
+            
+            new MavenXpp3Writer().write( writer, model );
         }
         finally
         {
+            IOUtil.close( reader );
             IOUtil.close( writer );
         }
         
-        pomFile.getParentFile().mkdirs();
-        FileUtils.copyFile( new File( "pom.xml" ), pomFile );
+        return output;
+    }
+
+    private void installLocalParentSnapshotPoms( File pomFile, ArtifactInstaller installer, ArtifactFactory factory,
+                                                 ArtifactRepository localRepo )
+        throws IOException, XmlPullParserException, ArtifactInstallationException
+    {
+        MavenXpp3Reader pomReader = new MavenXpp3Reader();
+
+        File pom = pomFile;
+
+        boolean firstPass = true;
+
+        while ( pom != null )
+        {
+
+            if ( !pom.exists() )
+            {
+                pom = null;
+                break;
+            }
+
+            String pomGroupId = null;
+            String pomArtifactId = null;
+            String pomVersion = null;
+
+            FileReader reader = null;
+
+            File currentPom = pom;
+
+            try
+            {
+                reader = new FileReader( pom );
+
+                Model model = pomReader.read( reader );
+
+                pomGroupId = model.getGroupId();
+                pomArtifactId = model.getArtifactId();
+                pomVersion = model.getVersion();
+
+                Parent parent = model.getParent();
+                if ( parent != null )
+                {
+                    pom = new File( pom.getParentFile(), parent.getRelativePath() );
+                }
+                else
+                {
+                    pom = null;
+                }
+            }
+            finally
+            {
+                IOUtil.close( reader );
+            }
+
+            if ( !firstPass )
+            {
+                Artifact pomArtifact = factory.createProjectArtifact( pomGroupId, pomArtifactId, pomVersion );
+                pomArtifact.addMetadata( new ProjectArtifactMetadata( pomArtifact, currentPom ) );
+
+                installer.install( currentPom, pomArtifact, localRepo );
+            }
+            else
+            {
+                firstPass = false;
+            }
+        }
     }
 
     /**
@@ -143,8 +350,34 @@
     protected void tearDown()
         throws Exception
     {
-        maven.stop();
-        super.tearDown();
+        //        maven.stop();
+        //        super.tearDown();
+        //
+        //        Field embedderField = maven.getClass().getDeclaredField( "embedder" );
+        //        embedderField.setAccessible( true );
+        //        Embedder embedder = (Embedder) embedderField.get( maven );
+
+        List containers = new ArrayList();
+
+        //        containers.add( embedder.getContainer() );
+        containers.add( getContainer() );
+
+        for ( Iterator iter = containers.iterator(); iter.hasNext(); )
+        {
+            PlexusContainer container = (PlexusContainer) iter.next();
+
+            if ( container != null )
+            {
+                container.dispose();
+
+                ClassRealm realm = container.getContainerRealm();
+
+                if ( realm != null )
+                {
+                    realm.getWorld().disposeRealm( realm.getId() );
+                }
+            }
+        }
     }
 
     /**
@@ -182,12 +415,20 @@
     protected void testProject( String projectName, Properties properties, String cleanGoal, String genGoal )
         throws Exception
     {
-
         File basedir = getTestFile( "target/test-classes/projects/" + projectName );
 
-        MavenProject project = maven.readProjectWithDependencies( new File( basedir, "pom.xml" ) );
+        File pom = new File( basedir, "pom.xml" );
+        
+        String pluginSpec = getPluginCLISpecification();
+
+        List goals = new ArrayList();
 
-        EventMonitor eventMonitor = new DefaultEventMonitor( new PlexusLoggerAdapter( new MavenEmbedderConsoleLogger() ) );
+        goals.add( pluginSpec + cleanGoal );
+        goals.add( pluginSpec + genGoal );
+        
+        executeMaven( pom, properties, goals );
+
+        MavenProject project = readProject( pom );
 
         String outputDirPath = IdeUtils.getPluginSetting( project, "maven-eclipse-plugin", "outputDir", null );
         File outputDir;
@@ -204,17 +445,64 @@
             projectOutputDir = new File( outputDir, project.getArtifactId() );
         }
 
-        this.maven.execute( project, Arrays.asList( new String[] {
-            "org.apache.maven.plugins:maven-eclipse-plugin:current:" + cleanGoal,
-            "org.apache.maven.plugins:maven-eclipse-plugin:current:" + genGoal } ), eventMonitor, new ConsoleDownloadMonitor(),
-                            properties, basedir );
-
         compareDirectoryContent( basedir, projectOutputDir, "" );
         compareDirectoryContent( basedir, projectOutputDir, ".settings/" );
         compareDirectoryContent( basedir, projectOutputDir, "META-INF/" );
 
     }
 
+    protected void executeMaven( File pom, Properties properties, List goals )
+        throws MavenInvocationException
+    {
+        executeMaven( pom, properties, goals, true );
+    }
+    
+    protected void executeMaven( File pom, Properties properties, List goals, boolean switchLocalRepo )
+        throws MavenInvocationException
+    {
+        InvocationRequest request = new DefaultInvocationRequest();
+        
+//        request.setDebug( true );
+        
+        if ( switchLocalRepo )
+        {
+            request.setLocalRepositoryDirectory( LOCAL_REPO_DIR );
+        }
+        
+        request.setPomFile( pom );
+
+        request.setGoals( goals );
+
+        request.setProperties( properties );
+
+        mavenInvoker.execute( request );
+    }
+
+    protected MavenProject readProject( File pom )
+        throws ProjectBuildingException
+    {
+        return projectBuilder.build( pom, localRepository, null );
+    }
+
+    protected String getPluginCLISpecification()
+    {
+        String pluginSpec = GROUP_ID + ":" + ARTIFACT_ID + ":";
+
+        //        String pluginVersion = System.getProperty( "pluginVersion" );
+        //        
+        //        if ( pluginVersion != null )
+        //        {
+        //            pluginSpec += pluginVersion + ":";
+        //        }
+        //
+        //        System.out.println( "\n\nUsing Eclipse plugin version: " + pluginVersion + "\n\n" );
+
+        // try using the test-version installed during setUp()
+        pluginSpec += VERSION + ":";
+
+        return pluginSpec;
+    }
+
     /**
      * @param basedir
      * @param projectOutputDir
@@ -239,8 +527,8 @@
             {
                 File file = files[j];
 
-                assertFileEquals( localRepositoryDir.getCanonicalPath(), file,
-                                  new File( projectOutputDir, additionalDir + file.getName() ) );
+                assertFileEquals( LOCAL_REPO_DIR.getCanonicalPath(), file, new File( projectOutputDir, additionalDir
+                    + file.getName() ) );
 
             }
         }
@@ -262,8 +550,8 @@
             // replace some vars in the expected line, to account
             // for absolute paths that are different on each installation.
             expected = StringUtils.replace( expected, "${basedir}", basedir );
-            expected = StringUtils.replace( expected, "${M2_REPO}", localRepositoryDir.getCanonicalPath()
-                .replace( '\\', '/' ) );
+            expected = StringUtils.replace( expected, "${M2_REPO}", LOCAL_REPO_DIR.getCanonicalPath().replace( '\\',
+                                                                                                               '/' ) );
 
             if ( actualLines.size() <= i )
             {

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginMasterProjectTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginMasterProjectTest.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginMasterProjectTest.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginMasterProjectTest.java Thu Nov  9 10:19:31 2006
@@ -22,7 +22,9 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Writer;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Properties;
 
 import org.apache.maven.cli.ConsoleDownloadMonitor;
@@ -99,16 +101,27 @@
     public void executeMaven2WithEmbedder()
         throws Exception
     {
-        MavenProject project = maven.readProjectWithDependencies( new File( basedir, "pom.xml" ) );
-        EventMonitor eventMonitor = new DefaultEventMonitor( new PlexusLoggerAdapter( new MavenEmbedderConsoleLogger() ) );
-
+        File pom = new File( basedir, "pom.xml" );
+        
         Properties properties = new Properties();
         properties.setProperty( "wtpversion", "R7" );
 
-        this.maven.execute( project, Arrays.asList( new String[] {
-            "org.apache.maven.plugins:maven-eclipse-plugin:clean",
-            "org.apache.maven.plugins:maven-eclipse-plugin:eclipse" } ), eventMonitor, new ConsoleDownloadMonitor(),
-                            properties, this.basedir );
+        String pluginSpec = getPluginCLISpecification();
+
+        List goals = new ArrayList();
+
+        goals.add( pluginSpec + "clean" );
+        goals.add( pluginSpec + "eclipse" );
+        
+        executeMaven( pom, properties, goals );
+        
+//        MavenProject project = maven.readProjectWithDependencies( pom );
+//        EventMonitor eventMonitor = new DefaultEventMonitor( new PlexusLoggerAdapter( new MavenEmbedderConsoleLogger() ) );
+//
+//        this.maven.execute( project, Arrays.asList( new String[] {
+//            "org.apache.maven.plugins:maven-eclipse-plugin:clean",
+//            "org.apache.maven.plugins:maven-eclipse-plugin:eclipse" } ), eventMonitor, new ConsoleDownloadMonitor(),
+//                            properties, this.basedir );
     }
 
     protected void executeMaven2()

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/RadPluginTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/RadPluginTest.java?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/RadPluginTest.java (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/RadPluginTest.java Thu Nov  9 10:19:31 2006
@@ -16,12 +16,6 @@
 
 package org.apache.maven.plugin.eclipse;
 
-import java.io.File;
-import java.io.FileReader;
-import java.util.Arrays;
-import java.util.Properties;
-
-import org.apache.maven.cli.ConsoleDownloadMonitor;
 import org.apache.maven.embedder.MavenEmbedderConsoleLogger;
 import org.apache.maven.embedder.PlexusLoggerAdapter;
 import org.apache.maven.monitor.event.DefaultEventMonitor;
@@ -32,6 +26,12 @@
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  */
@@ -50,7 +50,7 @@
         testProject( "project-rad-2", new Properties(), "rad-clean", "rad" );
         File generatedManifest = getTestFile( "src/test/resources/projects/project-rad-2/src/main/webapp/META-INF/MANIFEST.MF" );
         File expectedManifest = getTestFile( "src/test/resources/projects/project-rad-2/src/main/webapp/META-INF/expected_MANIFEST.MF" );
-        assertFileEquals( this.localRepositoryDir.getCanonicalPath(), generatedManifest, expectedManifest );
+        assertFileEquals( LOCAL_REPO_DIR.getCanonicalPath(), generatedManifest, expectedManifest );
 
     }
 
@@ -60,7 +60,7 @@
         testProject( "project-rad-3", new Properties(), "rad-clean", "rad" );
         File generatedManifest = getTestFile( "src/test/resources/projects/project-rad-3/ejbModule/META-INF/MANIFEST.MF" );
         File expectedManifest = getTestFile( "src/test/resources/projects/project-rad-3/ejbModule/META-INF/expected_MANIFEST.MF" );
-        assertFileEquals( this.localRepositoryDir.getCanonicalPath(), generatedManifest, expectedManifest );
+        assertFileEquals( LOCAL_REPO_DIR.getCanonicalPath(), generatedManifest, expectedManifest );
     }
 
     public void testProject4()
@@ -74,18 +74,18 @@
     {
         File basedir = getTestFile( "src/test/resources/projects/project-rad-5" );
 
-        FileUtils.deleteDirectory( getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1/META-INF" ) );
-        getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1/META-INF" ).mkdir();
+        FileUtils.deleteDirectory( new File( basedir, "project-rad-1/META-INF" ) );
+        new File( basedir, "project-rad-1/META-INF" ).mkdirs();
 
-        MavenProject project = this.maven.readProjectWithDependencies( new File( basedir, "pom.xml" ) );
-        MavenProject project2 = this.maven
-            .readProjectWithDependencies( new File(
-                                                    getTestFile( "src/test/resources/projects/project-rad-5/project-rad-2" ),
-                                                    "pom.xml" ) );
-        MavenProject project3 = this.maven
-            .readProjectWithDependencies( new File(
-                                                    getTestFile( "src/test/resources/projects/project-rad-5/project-rad-3" ),
-                                                    "pom.xml" ) );
+        File pom0 = new File( basedir, "pom.xml" );
+        File pom1 = new File( basedir, "project-rad-1/pom.xml" );
+        File pom2 = new File( basedir, "project-rad-2/pom.xml" );
+        File pom3 = new File( basedir, "project-rad-3/pom.xml" );
+        
+        MavenProject project = readProject( pom0 );
+        MavenProject project1 = readProject( pom1 );
+        MavenProject project2 = readProject( pom2 );
+        MavenProject project3 = readProject( pom3 );
 
         EventMonitor eventMonitor = new DefaultEventMonitor( new PlexusLoggerAdapter( new MavenEmbedderConsoleLogger() ) );
 
@@ -102,22 +102,36 @@
             outputDir.mkdirs();
             new File( outputDir, project.getArtifactId() );
         }
-        this.maven.execute( Arrays.asList( new MavenProject[] { project, project2, project3 } ), Arrays
-            .asList( new String[] {
-                "install",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
-                            new Properties(), basedir );
-        MavenProject project1 = this.maven
-            .readProjectWithDependencies( new File(
-                                                    getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1" ),
-                                                    "pom.xml" ) );
-        this.maven.execute( Arrays.asList( new MavenProject[] { project1, project2, project3 } ), Arrays
-            .asList( new String[] {
-                "install",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
-                            new Properties(), basedir );
+        
+        List goals = new ArrayList();
+        
+        String pluginSpec = getPluginCLISpecification();
+        
+        goals.add( pluginSpec + "rad-clean" );
+        goals.add( pluginSpec + "rad" );
+        
+        Properties props = new Properties();
+        
+        executeMaven( pom0, props, goals );
+        executeMaven( pom2, props, goals );
+        executeMaven( pom3, props, goals );
+        
+        executeMaven( pom1, props, goals );
+        executeMaven( pom2, props, goals );
+        executeMaven( pom3, props, goals );
+        
+//        this.maven.execute( Arrays.asList( new MavenProject[] { project, project2, project3 } ), Arrays
+//            .asList( new String[] {
+//                "install",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
+//                            new Properties(), basedir );
+//        this.maven.execute( Arrays.asList( new MavenProject[] { project1, project2, project3 } ), Arrays
+//            .asList( new String[] {
+//                "install",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
+//                            new Properties(), basedir );
 
         // jar muss reincoliert sein
         assertTrue( getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1/maven-core-98.0.jar" )
@@ -149,21 +163,21 @@
     public void testProject5_2()
         throws Exception
     {
-
-        FileUtils.deleteDirectory( getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1/META-INF" ) );
-        FileUtils.copyDirectory( getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1/META-INF-2" ),
-                                 getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1/META-INF" ) );
-
         File basedir = getTestFile( "src/test/resources/projects/project-rad-5" );
-        MavenProject project = this.maven.readProjectWithDependencies( new File( basedir, "pom.xml" ) );
-        MavenProject project2 = this.maven
-            .readProjectWithDependencies( new File(
-                                                    getTestFile( "src/test/resources/projects/project-rad-5/project-rad-2" ),
-                                                    "pom.xml" ) );
-        MavenProject project3 = this.maven
-            .readProjectWithDependencies( new File(
-                                                    getTestFile( "src/test/resources/projects/project-rad-5/project-rad-3" ),
-                                                    "pom.xml" ) );
+
+        FileUtils.deleteDirectory( new File( basedir, "project-rad-1/META-INF" ) );
+        FileUtils.copyDirectory( new File( basedir, "project-rad-1/META-INF-2" ),
+                                 new File( basedir, "project-rad-1/META-INF" ) );
+
+        File pom0 = new File( basedir, "pom.xml" );
+        File pom1 = new File( basedir, "project-rad-1/pom.xml" );
+        File pom2 = new File( basedir, "project-rad-2/pom.xml" );
+        File pom3 = new File( basedir, "project-rad-3/pom.xml" );
+        
+        MavenProject project = readProject( pom0 );
+        MavenProject project1 = readProject( pom1 );
+        MavenProject project2 = readProject( pom2 );
+        MavenProject project3 = readProject( pom3 );
 
         EventMonitor eventMonitor = new DefaultEventMonitor( new PlexusLoggerAdapter( new MavenEmbedderConsoleLogger() ) );
 
@@ -180,22 +194,37 @@
             outputDir.mkdirs();
             new File( outputDir, project.getArtifactId() );
         }
-        this.maven.execute( Arrays.asList( new MavenProject[] { project, project2, project3 } ), Arrays
-            .asList( new String[] {
-                "install",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
-                            new Properties(), basedir );
-        MavenProject project1 = this.maven
-            .readProjectWithDependencies( new File(
-                                                    getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1" ),
-                                                    "pom.xml" ) );
-        this.maven.execute( Arrays.asList( new MavenProject[] { project1, project2, project3 } ), Arrays
-            .asList( new String[] {
-                "install",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
-                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
-                            new Properties(), basedir );
+        
+        List goals = new ArrayList();
+        
+        String pluginSpec = getPluginCLISpecification();
+        
+        goals.add( pluginSpec + "rad-clean" );
+        goals.add( pluginSpec + "rad" );
+        
+        Properties props = new Properties();
+        
+        executeMaven( pom0, props, goals );
+        executeMaven( pom2, props, goals );
+        executeMaven( pom3, props, goals );
+        
+        executeMaven( pom1, props, goals );
+        executeMaven( pom2, props, goals );
+        executeMaven( pom3, props, goals );
+        
+//        this.maven.execute( Arrays.asList( new MavenProject[] { project, project2, project3 } ), Arrays
+//            .asList( new String[] {
+//                "install",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
+//                            new Properties(), basedir );
+//        
+//        this.maven.execute( Arrays.asList( new MavenProject[] { project1, project2, project3 } ), Arrays
+//            .asList( new String[] {
+//                "install",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad-clean",
+//                "org.apache.maven.plugins:maven-eclipse-plugin:current:rad" } ), eventMonitor, new ConsoleDownloadMonitor(),
+//                            new Properties(), basedir );
 
         assertTrue( getTestFile( "src/test/resources/projects/project-rad-5/project-rad-1/maven-core-98.0.jar" )
             .exists() );

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-22/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-22/pom.xml?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-22/pom.xml (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-22/pom.xml Thu Nov  9 10:19:31 2006
@@ -13,4 +13,13 @@
       <version>3.8.1</version>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <version>test</version>
+        <extensions>true</extensions>
+      </plugin>
+    </plugins>
+  </build>
 </project>

Modified: maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-23/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-23/pom.xml?view=diff&rev=473001&r1=473000&r2=473001
==============================================================================
--- maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-23/pom.xml (original)
+++ maven/plugins/branches/MECLIPSE-137/maven-eclipse-plugin/src/test/resources/projects/project-23/pom.xml Thu Nov  9 10:19:31 2006
@@ -11,6 +11,8 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-eclipse-plugin</artifactId>
+        <version>test</version>
+        <extensions>true</extensions>
         <configuration>
           <additionalConfig>
             <file>