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
{