You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2009/04/30 20:55:26 UTC

svn commit: r770395 - in /maven/components/branches/MNG-2766: maven-core/src/main/java/org/apache/maven/project/ maven-core/src/test/java/org/apache/maven/project/ maven-model-builder/src/main/java/org/apache/maven/model/ maven-model-builder/src/main/j...

Author: sisbell
Date: Thu Apr 30 18:55:26 2009
New Revision: 770395

URL: http://svn.apache.org/viewvc?rev=770395&view=rev
Log:
Fixes for merging in plugin config. Needed to do copy of plugins and config.

Modified:
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
    maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
    maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Thu Apr 30 18:55:26 2009
@@ -42,10 +42,12 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ModelEventListener;
 import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
 import org.apache.maven.model.ProcessorContext;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.interpolator.Interpolator;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.processors.PluginProcessor;
 import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileActivationException;
 import org.apache.maven.profiles.ProfileManager;
@@ -61,6 +63,7 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 /**
  * @version $Id$
@@ -117,6 +120,7 @@
 		try 
 		{
 			domainModel = build( "unknown", pomFile, configuration );
+
 		} 
 		catch (IOException e) 
 		{
@@ -155,27 +159,72 @@
     		}
     		        	
             domainModel = ProcessorContext.mergeProfilesIntoModel( externalProfiles, domainModel );
+    
             
         }
         catch ( IOException e )
         {
             throw new ProjectBuildingException("", "");
         }
-        
+   
         //Interpolation & Management
         MavenProject project;
 		try 
 		{		
 			Model model = interpolateDomainModel( domainModel, configuration, pomFile );
+				
+			List<Plugin> plns = new ArrayList<Plugin>();
+			
 			Set<Plugin> plugins = lifecycle.getPluginsBoundByDefaultToAllLifecycles(model.getPackaging());
-			ProcessorContext.addPluginsToModel(model, plugins);			
+
+			addPluginsToModel(model, plugins);			
+							
 			ProcessorContext.processManagementNodes(model);
+			
 			project = this.fromDomainModelToMavenProject(model, domainModel.getParentFile(), configuration, pomFile);
-				
-			plugins = lifecycle.populateDefaultConfigurationForPlugins(new HashSet<Plugin>(model.getBuild().getPlugins()), 
+		
+			ArrayList<Plugin> pln = new ArrayList<Plugin>();
+			for(Plugin p : project.getModel().getBuild().getPlugins())
+			{
+				Plugin copy = new Plugin();
+				PluginProcessor.copy2(p, copy, true);	
+				pln.add(copy);
+			}
+	  		
+			Set<Plugin> pl = lifecycle.populateDefaultConfigurationForPlugins(new HashSet<Plugin>(pln), 
 				project, configuration.getLocalRepository());
+			/*
+    		if(model.getArtifactId() != null &&
+    				model.getArtifactId().equals("maven-model"))
+    			{
+    			System.out.println(new DomainModel(project.getModel()).asString());
+    			} 			
+			*/
+    		
+			for (Plugin buildPlugin : pl) {
+				Xpp3Dom dom = (Xpp3Dom) buildPlugin.getConfiguration();
+				Plugin x = containsPlugin(buildPlugin, project.getModel()
+						.getBuild().getPlugins());
+
+				for (PluginExecution e : buildPlugin.getExecutions()) {
+					for (String g : e.getGoals()) {
+						if (x != null) {
+							PluginExecution pe = contains(g, x.getExecutions());
+							if (pe != null) {
+								Xpp3Dom dom1 = Xpp3Dom.mergeXpp3Dom(
+										(Xpp3Dom) pe.getConfiguration(),
+										(Xpp3Dom) e.getConfiguration());
+								e.setConfiguration(dom1);
+							}
+						}
+						Xpp3Dom dom1 = Xpp3Dom.mergeXpp3Dom((Xpp3Dom) e
+								.getConfiguration(), dom);
+						e.setConfiguration(dom1);
+					}
+				}
 
-			project.getModel().getBuild().setPlugins(new ArrayList<Plugin>(plugins));
+			}    		
+			project.getModel().getBuild().setPlugins(new ArrayList<Plugin>(pl));	
 		} 
 		catch (IOException e) 
 		{
@@ -186,7 +235,6 @@
 			e.printStackTrace();
 			throw new ProjectBuildingException("",e.getMessage());
 		}
-		
         project.setActiveProfiles( projectProfiles );
          
         Build build = project.getBuild();
@@ -203,6 +251,56 @@
         
         return project;
     }
+
+    
+    
+    private static PluginExecution contains(String goal, List<PluginExecution> plugins)
+    {
+    	for(PluginExecution pe : plugins)
+    	{
+    		if(pe.getGoals().contains(goal))
+    		{
+    			return pe;
+    		}
+    	}
+    	return null;
+    }
+    
+    public static void addPluginsToModel(Model target, Set<Plugin> plugins)
+    {
+    	List<Plugin> mPlugins = new ArrayList<Plugin>(target.getBuild().getPlugins());
+    	
+    	List<Plugin> lifecyclePlugins = new ArrayList<Plugin>();
+    	
+    	for( Plugin p : plugins )
+    	{
+    		Plugin mPlugin = containsPlugin( p, mPlugins);
+    		if( mPlugin == null)
+    		{
+    			lifecyclePlugins.add(p);
+    		}
+    		else if(p.getConfiguration() != null)
+    		{
+    			System.out.println(Xpp3Dom.mergeXpp3Dom((Xpp3Dom) p.getConfiguration(), (Xpp3Dom) mPlugin.getConfiguration()));
+    		}
+    	}
+    	mPlugins.addAll(lifecyclePlugins);
+    	target.getBuild().setPlugins(mPlugins);
+
+    }
+    
+    private static Plugin containsPlugin(Plugin plugin, List<Plugin> plugins)
+    {
+    	for(Plugin p : plugins)
+    	{
+    		if( p.getGroupId().equals(plugin.getGroupId()) && p.getArtifactId().equals(plugin.getArtifactId()))
+    		{
+    			return p;
+    		}
+    	}
+    	
+    	return null;
+    }    
         
     public MavenProject buildFromRepository(Artifact artifact, ProjectBuilderConfiguration configuration )
     	throws ProjectBuildingException
@@ -618,7 +716,17 @@
         Artifact artifactParent = repositorySystem.createProjectArtifact( domainModel.getParentGroupId(), domainModel.getParentArtifactId(), domainModel.getParentVersion() );
 
         ArtifactResolutionRequest request = new ArtifactResolutionRequest( artifactParent, localRepository, remoteRepositories );
-        ArtifactResolutionResult result = repositorySystem.resolve( request );
+        ArtifactResolutionResult result;
+		try 
+		{
+			result = repositorySystem.resolve( request );
+		} 
+		catch (Exception e) 
+		{
+            throw (IOException) new IOException( "The parent POM " + artifactParent
+                    + " could not be retrieved from any repository" ).initCause( e );
+		}
+		
         try
         {
             resolutionErrorHandler.throwErrors( request, result );

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java Thu Apr 30 18:55:26 2009
@@ -1434,7 +1434,13 @@
 	{
 	    PomTestWrapper pom = buildPom( "dependency-management-with-interpolation/sub" );
 	}   
-    
+
+    public void testMaven()
+	    throws Exception
+	{
+	    PomTestWrapper pom = buildPom( "maven/sub" );
+	    System.out.println(pom.getDomainModel().asString());
+	}       
     
     private void assertPathSuffixEquals( String expected, Object actual )
     {

Modified: maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java (original)
+++ maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java Thu Apr 30 18:55:26 2009
@@ -256,37 +256,6 @@
     	build.addPlugin(p1);   	
     }
     
-    public static void addPluginsToModel(Model target, Set<Plugin> plugins)
-    {
-    	List<Plugin> mPlugins = target.getBuild().getPlugins();
-    	
-    	List<Plugin> lifecyclePlugins = new ArrayList<Plugin>();
-    	
-    	for( Plugin p : plugins )
-    	{
-    		if( !containsPlugin( p, mPlugins) )
-    		{
-    			lifecyclePlugins.add(p);
-    		}
-    	}
-    	
-    	target.getBuild().getPlugins().addAll(lifecyclePlugins);
-
-    }
-    
-    private static boolean containsPlugin(Plugin plugin, List<Plugin> plugins)
-    {
-    	for(Plugin p : plugins)
-    	{
-    		if( p.getGroupId().equals(plugin.getGroupId()) && p.getArtifactId().equals(plugin.getArtifactId()))
-    		{
-    			return true;
-    		}
-    	}
-    	
-    	return false;
-    }
-    
     public static Model processManagementNodes(Model target) 
     	throws IOException
     {

Modified: maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java (original)
+++ maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java Thu Apr 30 18:55:26 2009
@@ -26,6 +26,7 @@
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginExecution;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomUtils;
 
 public class PluginProcessor
     extends BaseProcessor
@@ -175,7 +176,7 @@
      * @param target
      * @param isChild
      */
-    private static void copy2(Plugin source, Plugin target, boolean isChild)
+    public static void copy2(Plugin source, Plugin target, boolean isChild)
     {
         if(!isChild && source.getInherited() != null && !source.getInherited().equalsIgnoreCase( "true" ))
         {
@@ -223,11 +224,11 @@
             //TODO: Not copying
             if(target.getConfiguration() != null)
             {
-                target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )); 
+                target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ))); 
             }
             else
             {
-                target.setConfiguration( source.getConfiguration() );
+                target.setConfiguration( new Xpp3Dom((Xpp3Dom) source.getConfiguration() ) );
             }
                 
         }
@@ -283,11 +284,11 @@
             //TODO: Not copying
             if(target.getConfiguration() != null)
             {
-                target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )); 
+                target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ) )); 
             }
             else
             {
-                target.setConfiguration( source.getConfiguration() );
+                target.setConfiguration( new Xpp3Dom((Xpp3Dom) source.getConfiguration() ) );
             }
                 
         }
@@ -347,11 +348,11 @@
         {
             if(target.getConfiguration() != null)
             {
-                target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ));     
+                target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )));     
             }
             else
             {
-                target.setConfiguration( source.getConfiguration() );
+                target.setConfiguration( new Xpp3Dom( (Xpp3Dom) source.getConfiguration()) );
             }            
         }