Author: bentmann Date: Mon May 4 01:08:40 2009 New Revision: 771154 URL: http://svn.apache.org/viewvc?rev=771154&view=rev Log: o Fixed merging of lifecycle plugins that contribute more than one execution o Fixed conversion of default value for plugin configuration
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=771154&r1=771153&r2=771154&view=diff ============================================================================== --- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original) +++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Mon May 4 01:08:40 2009 @@ -18,10 +18,10 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -508,7 +508,7 @@ // public Set<Plugin> getPluginsBoundByDefaultToAllLifecycles( String packaging ) { - Set<Plugin> plugins = new LinkedHashSet<Plugin>(); + Map<Plugin, Plugin> plugins = new LinkedHashMap<Plugin, Plugin>(); for ( Lifecycle lifecycle : lifecycles ) { @@ -524,23 +524,35 @@ // // org.apache.maven.plugins:maven-compiler-plugin:compile // - for ( String s : lifecyclePhasesForPackaging.values() ) - { - plugins.add( populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( s ) ); - } + parseLifecyclePhaseDefinitions( plugins, lifecyclePhasesForPackaging.values() ); } else if ( lifecycle.getDefaultPhases() != null ) { - for ( String s : lifecycle.getDefaultPhases() ) - { - plugins.add( populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( s ) ); - } + parseLifecyclePhaseDefinitions( plugins, lifecycle.getDefaultPhases() ); } } - return plugins; + return plugins.keySet(); } - + + private void parseLifecyclePhaseDefinitions( Map<Plugin, Plugin> plugins, + Collection<String> lifecyclePhaseDefinitions ) + { + for ( String lifecyclePhaseDefinition : lifecyclePhaseDefinitions ) + { + Plugin plugin = populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( lifecyclePhaseDefinition ); + Plugin existing = plugins.get( plugin ); + if ( existing != null ) + { + existing.getExecutions().addAll( plugin.getExecutions() ); + } + else + { + plugins.put( plugin, plugin ); + } + } + } + private Plugin populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( String lifecyclePhaseDefinition ) { String[] p = StringUtils.split( lifecyclePhaseDefinition, ":" ); @@ -548,8 +560,10 @@ plugin.setGroupId( p[0] ); plugin.setArtifactId( p[1] ); PluginExecution execution = new PluginExecution(); - execution.setGoals( Arrays.asList( new String[]{ p[2] } ) ); - plugin.setExecutions( Arrays.asList( new PluginExecution[]{ execution } ) ); + // FIXME: Find a better execution id + execution.setId( "default-" + p[2] ); + execution.setGoals( new ArrayList<String>( Arrays.asList( new String[] { p[2] } ) ) ); + plugin.setExecutions( new ArrayList<PluginExecution>( Arrays.asList( new PluginExecution[] { execution } ) ) ); return plugin; } @@ -563,7 +577,7 @@ for( String g : e.getGoals() ) { Xpp3Dom dom = getDefaultPluginConfiguration( p.getGroupId(), p.getArtifactId(), p.getVersion(), g, project, localRepository ); - e.setConfiguration( dom ); + e.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) e.getConfiguration(), dom, Boolean.TRUE ) ); } } } @@ -594,11 +608,11 @@ for( PlexusConfiguration ce : ces ) { - if ( ce.getValue( null ) != null ) + String defaultValue = ce.getAttribute( "default-value", null ); + if ( ce.getValue( null ) != null || defaultValue != null ) { Xpp3Dom e = new Xpp3Dom( ce.getName() ); e.setValue( ce.getValue( null ) ); - String defaultValue = ce.getAttribute( "default-value", null ); if ( defaultValue != null ) { e.setAttribute( "default-value", defaultValue ); 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=771154&r1=771153&r2=771154&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 Mon May 4 01:08:40 2009 @@ -191,7 +191,7 @@ pln.add(copy); } - // Merge the various sources for mojo configuration: + // Merge the various sources for mojo configuration: // 1. default values from mojo descriptor // 2. POM values from per-plugin configuration // 3. POM values from per-execution configuration @@ -280,7 +280,7 @@ return null; } - public static void addPluginsToModel(Model target, Set<Plugin> plugins) + public static void addPluginsToModel( Model target, Set<Plugin> plugins ) { List<Plugin> mngPlugins = (target.getBuild().getPluginManagement() != null) ? target.getBuild().getPluginManagement().getPlugins() : new ArrayList<Plugin>(); @@ -300,14 +300,19 @@ } Plugin pomPlugin = containsPlugin( p, pomPlugins); - if( pomPlugin == null) - { - lifecyclePlugins.add(p); - } - else if(p.getConfiguration() != null) - { - System.out.println(Xpp3Dom.mergeXpp3Dom((Xpp3Dom) p.getConfiguration(), (Xpp3Dom) pomPlugin.getConfiguration())); - } + if ( pomPlugin == null ) + { + lifecyclePlugins.add( p ); + } + else + { + PluginProcessor.copy2( p, pomPlugin, true ); + if ( p.getConfiguration() != null ) + { + System.out.println( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) p.getConfiguration(), + (Xpp3Dom) pomPlugin.getConfiguration() ) ); + } + } } pomPlugins.addAll(lifecyclePlugins); target.getBuild().setPlugins(pomPlugins);