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()) ); } }