You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/09/18 21:29:20 UTC

svn commit: r816755 - /maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java

Author: bentmann
Date: Fri Sep 18 19:29:19 2009
New Revision: 816755

URL: http://svn.apache.org/viewvc?rev=816755&view=rev
Log:
o Fixed handling of parameter alias in combination with default value

Modified:
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=816755&r1=816754&r2=816755&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Fri Sep 18 19:29:19 2009
@@ -1287,41 +1287,24 @@
             plugin = findPlugin( g, a, project.getPluginManagement().getPlugins() );
         }
 
-        MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
-
-        if ( plugin != null && StringUtils.isNotEmpty( mojoExecution.getExecutionId() ) )
+        if ( plugin != null )
         {
-            for ( PluginExecution e : plugin.getExecutions() )
-            {
-                if ( mojoExecution.getExecutionId().equals( e.getId() ) )
-                {
-                    Xpp3Dom executionConfiguration = (Xpp3Dom) e.getConfiguration();
-
-                    Xpp3Dom mojoConfiguration =
-                        ( executionConfiguration != null ) ? new Xpp3Dom( executionConfiguration ) : null;
-
-                    mojoConfiguration = Xpp3Dom.mergeXpp3Dom( mojoExecution.getConfiguration(), mojoConfiguration );
+            PluginExecution pluginExecution =
+                findPluginExecution( mojoExecution.getExecutionId(), plugin.getExecutions() );
 
-                    mojoExecution.setConfiguration( mojoConfiguration );
+            Xpp3Dom pomConfiguration = null;
 
-                    return;
-                }
+            if ( pluginExecution != null )
+            {
+                pomConfiguration = (Xpp3Dom) pluginExecution.getConfiguration();
             }
-        }
-
-        if ( allowPluginLevelConfig )
-        {
-            Xpp3Dom defaultConfiguration = getMojoConfiguration( mojoDescriptor );
-
-            Xpp3Dom mojoConfiguration = defaultConfiguration;
-
-            if ( plugin != null && plugin.getConfiguration() != null )
+            else if ( allowPluginLevelConfig )
             {
-                Xpp3Dom pluginConfiguration = (Xpp3Dom) plugin.getConfiguration();
-                pluginConfiguration = new Xpp3Dom( pluginConfiguration );
-                mojoConfiguration = Xpp3Dom.mergeXpp3Dom( pluginConfiguration, defaultConfiguration, Boolean.TRUE );
+                pomConfiguration = (Xpp3Dom) plugin.getConfiguration();
             }
 
+            Xpp3Dom mojoConfiguration = ( pomConfiguration != null ) ? new Xpp3Dom( pomConfiguration ) : null;
+
             mojoConfiguration = Xpp3Dom.mergeXpp3Dom( mojoExecution.getConfiguration(), mojoConfiguration );
 
             mojoExecution.setConfiguration( mojoConfiguration );
@@ -1339,65 +1322,49 @@
     {
         MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
 
-        Xpp3Dom mojoConfiguration = mojoExecution.getConfiguration();
+        Xpp3Dom executionConfiguration = mojoExecution.getConfiguration();
+        if ( executionConfiguration == null )
+        {
+            executionConfiguration = new Xpp3Dom( "configuration" );
+        }
 
         Xpp3Dom defaultConfiguration = getMojoConfiguration( mojoDescriptor );
 
-        mojoConfiguration = Xpp3Dom.mergeXpp3Dom( mojoConfiguration, defaultConfiguration, Boolean.TRUE );
+        Xpp3Dom finalConfiguration = new Xpp3Dom( "configuration" );
 
-        mojoConfiguration = extractMojoConfiguration( mojoConfiguration, mojoDescriptor );
+        if ( mojoDescriptor.getParameters() != null )
+        {
+            for ( Parameter parameter : mojoDescriptor.getParameters() )
+            {
+                Xpp3Dom parameterConfiguration = executionConfiguration.getChild( parameter.getName() );
 
-        mojoExecution.setConfiguration( mojoConfiguration );
-    }
+                if ( parameterConfiguration == null )
+                {
+                    parameterConfiguration = executionConfiguration.getChild( parameter.getAlias() );
+                }
 
-    /**
-     * Extracts the configuration for a single mojo from the specified execution configuration by discarding any
-     * non-applicable parameters. This is necessary because a plugin execution can have multiple goals with different
-     * parametes whose default configurations are all aggregated into the execution configuration. However, the
-     * underlying configurator will error out when trying to configure a mojo parameter that is specified in the
-     * configuration but not present in the mojo instance.
-     * 
-     * @param executionConfiguration The configuration from the plugin execution, may be {@code null}.
-     * @param mojoDescriptor The descriptor for the mojo being configured, must not be {@code null}.
-     * @return The configuration for the mojo, never {@code null}.
-     */
-    private Xpp3Dom extractMojoConfiguration( Xpp3Dom executionConfiguration, MojoDescriptor mojoDescriptor )
-    {
-        Xpp3Dom mojoConfiguration = null;
+                Xpp3Dom parameterDefaults = defaultConfiguration.getChild( parameter.getName() );
 
-        if ( executionConfiguration != null )
-        {
-            mojoConfiguration = new Xpp3Dom( executionConfiguration.getName() );
+                parameterConfiguration = Xpp3Dom.mergeXpp3Dom( parameterConfiguration, parameterDefaults, Boolean.TRUE );
 
-            if ( mojoDescriptor.getParameters() != null )
-            {
-                for ( Parameter parameter : mojoDescriptor.getParameters() )
+                if ( parameterConfiguration != null )
                 {
-                    Xpp3Dom parameterConfiguration = executionConfiguration.getChild( parameter.getName() );
+                    parameterConfiguration = new Xpp3Dom( parameterConfiguration, parameter.getName() );
 
-                    if ( parameterConfiguration == null )
+                    if ( StringUtils.isEmpty( parameterConfiguration.getAttribute( "implementation" ) )
+                        && StringUtils.isNotEmpty( parameter.getImplementation() ) )
                     {
-                        parameterConfiguration = executionConfiguration.getChild( parameter.getAlias() );
+                        parameterConfiguration.setAttribute( "implementation", parameter.getImplementation() );
                     }
 
-                    if ( parameterConfiguration != null )
-                    {
-                        parameterConfiguration = new Xpp3Dom( parameterConfiguration, parameter.getName() );
-
-                        if ( StringUtils.isNotEmpty( parameter.getImplementation() ) )
-                        {
-                            parameterConfiguration.setAttribute( "implementation", parameter.getImplementation() );
-                        }
-
-                        mojoConfiguration.addChild( parameterConfiguration );
-                    }
+                    finalConfiguration.addChild( parameterConfiguration );
                 }
             }
         }
 
-        return mojoConfiguration;
+        mojoExecution.setConfiguration( finalConfiguration );
     }
-   
+
     // org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process
     MojoDescriptor getMojoDescriptor( String task, MavenSession session, MavenProject project ) 
         throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException, PluginVersionResolutionException
@@ -1525,6 +1492,22 @@
         return null;
     }
 
+    private PluginExecution findPluginExecution( String executionId, Collection<PluginExecution> executions )
+    {
+        if ( StringUtils.isNotEmpty( executionId ) )
+        {
+            for ( PluginExecution execution : executions )
+            {
+                if ( executionId.equals( execution.getId() ) )
+                {
+                    return execution;
+                }
+            }
+        }
+
+        return null;
+    }
+
     public void initialize()
         throws InitializationException
     {