Author: bentmann
Date: Tue Aug 4 13:01:35 2009
New Revision: 800767
URL: http://svn.apache.org/viewvc?rev=800767&view=rev
Log:
o Restored compat with Maven 2.x regarding order of mojo parameters
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=800767&r1=800766&r2=800767&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
Tue Aug 4 13:01:35 2009
@@ -258,6 +258,11 @@
if ( !forkedExecutions.isEmpty() )
{
+ if ( logger.isDebugEnabled() )
+ {
+ logger.debug( "Forking execution for " +
mojoExecution.getMojoDescriptor().getId() );
+ }
+
executionProject = project.clone();
session.setCurrentProject( executionProject );
@@ -272,6 +277,11 @@
{
session.setCurrentProject( project );
}
+
+ if ( logger.isDebugEnabled() )
+ {
+ logger.debug( "Completed forked execution for " +
mojoExecution.getMojoDescriptor().getId() );
+ }
}
project.setExecutionProject( executionProject );
@@ -335,6 +345,8 @@
populateMojoExecutionConfiguration( project, mojoExecution,
MojoExecution.Source.CLI.equals( mojoExecution.getSource() ) );
+ extractMojoConfiguration( mojoExecution );
+
calculateForkedExecutions( mojoExecution, session, project, new
HashSet<MojoDescriptor>() );
collectDependencyResolutionScopes(
requiredDependencyResolutionScopes, mojoExecution );
@@ -621,12 +633,11 @@
{
for ( MojoExecution forkedExecution :
forkedExecutions )
{
- Xpp3Dom executionConfiguration =
forkedExecution.getConfiguration();
+ Xpp3Dom forkedConfiguration =
forkedExecution.getConfiguration();
- Xpp3Dom mergedConfiguration =
- Xpp3Dom.mergeXpp3Dom( phaseConfiguration,
executionConfiguration );
+ forkedConfiguration = Xpp3Dom.mergeXpp3Dom(
phaseConfiguration, forkedConfiguration );
- forkedExecution.setConfiguration(
mergedConfiguration );
+ forkedExecution.setConfiguration(
forkedConfiguration );
}
}
}
@@ -637,6 +648,8 @@
{
for ( MojoExecution forkedExecution : forkedExecutions )
{
+ extractMojoConfiguration( forkedExecution );
+
calculateForkedExecutions( forkedExecution, session,
project, alreadyForkedExecutions );
mojoExecution.addForkedExecution( forkedExecution );
@@ -657,6 +670,8 @@
populateMojoExecutionConfiguration( project, forkedExecution, true
);
+ extractMojoConfiguration( forkedExecution );
+
calculateForkedExecutions( forkedExecution, session, project,
alreadyForkedExecutions );
mojoExecution.addForkedExecution( forkedExecution );
@@ -690,7 +705,7 @@
{
Xpp3Dom executionConfiguration = (Xpp3Dom)
e.getConfiguration();
- Xpp3Dom mojoConfiguration = extractMojoConfiguration(
executionConfiguration, mojoDescriptor );
+ Xpp3Dom mojoConfiguration = new Xpp3Dom(
executionConfiguration );
mojoConfiguration = Xpp3Dom.mergeXpp3Dom(
mojoExecution.getConfiguration(), mojoConfiguration );
@@ -722,7 +737,7 @@
if ( plugin != null && plugin.getConfiguration() != null )
{
Xpp3Dom pluginConfiguration = (Xpp3Dom)
plugin.getConfiguration();
- pluginConfiguration = extractMojoConfiguration(
pluginConfiguration, mojoDescriptor );
+ pluginConfiguration = new Xpp3Dom( pluginConfiguration );
mojoConfiguration = Xpp3Dom.mergeXpp3Dom( pluginConfiguration,
defaultConfiguration, Boolean.TRUE );
}
@@ -732,6 +747,15 @@
}
}
+ private void extractMojoConfiguration( MojoExecution mojoExecution )
+ {
+ Xpp3Dom configuration = mojoExecution.getConfiguration();
+
+ configuration = extractMojoConfiguration( configuration,
mojoExecution.getMojoDescriptor() );
+
+ mojoExecution.setConfiguration( configuration );
+ }
+
/**
* 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
@@ -739,56 +763,42 @@
* 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, must not be {...@code null}.
+ * @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 = new Xpp3Dom(
executionConfiguration.getName() );
+ Xpp3Dom mojoConfiguration = null;
- Map<String, Parameter> mojoParameters =
mojoDescriptor.getParameterMap();
-
- Map<String, String> aliases = new HashMap<String, String>();
- if ( mojoDescriptor.getParameters() != null )
+ if ( executionConfiguration != null )
{
- for ( Parameter parameter : mojoDescriptor.getParameters() )
+ mojoConfiguration = new Xpp3Dom( executionConfiguration.getName()
);
+
+ if ( mojoDescriptor.getParameters() != null )
{
- String alias = parameter.getAlias();
- if ( StringUtils.isNotEmpty( alias ) )
+ for ( Parameter parameter : mojoDescriptor.getParameters() )
{
- aliases.put( alias, parameter.getName() );
- }
- }
- }
+ Xpp3Dom parameterConfiguration =
executionConfiguration.getChild( parameter.getName() );
- for ( int i = 0; i < executionConfiguration.getChildCount(); i++ )
- {
- Xpp3Dom executionDom = executionConfiguration.getChild( i );
- String paramName = executionDom.getName();
+ if ( parameterConfiguration == null )
+ {
+ parameterConfiguration =
executionConfiguration.getChild( parameter.getAlias() );
+ }
- Xpp3Dom mojoDom;
+ if ( parameterConfiguration != null )
+ {
+ parameterConfiguration = new Xpp3Dom(
parameterConfiguration, parameter.getName() );
- if ( mojoParameters.containsKey( paramName ) )
- {
- mojoDom = new Xpp3Dom( executionDom );
- }
- else if ( aliases.containsKey( paramName ) )
- {
- mojoDom = new Xpp3Dom( executionDom, aliases.get( paramName )
);
- }
- else
- {
- continue;
- }
+ if ( StringUtils.isNotEmpty(
parameter.getImplementation() ) )
+ {
+ parameterConfiguration.setAttribute(
"implementation", parameter.getImplementation() );
+ }
- String implementation = mojoParameters.get( mojoDom.getName()
).getImplementation();
- if ( StringUtils.isNotEmpty( implementation ) )
- {
- mojoDom.setAttribute( "implementation", implementation );
+ mojoConfiguration.addChild( parameterConfiguration );
+ }
+ }
}
-
- mojoConfiguration.addChild( mojoDom );
}
return mojoConfiguration;