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 {