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/09 12:07:01 UTC
svn commit: r812869 - in
/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven: ./
lifecycle/ project/
Author: bentmann
Date: Wed Sep 9 10:07:01 2009
New Revision: 812869
URL: http://svn.apache.org/viewvc?rev=812869&view=rev
Log:
[MNG-4342] [regression] Multiple goals within single execution with equally named parameter get configured with wrong default values
Modified:
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=812869&r1=812868&r2=812869&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Wed Sep 9 10:07:01 2009
@@ -311,12 +311,6 @@
{
ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
- /*
- * NOTE: We delay plugin configuration processing until a project is actually build to allow plugins to be
- * resolved from the reactor.
- */
- projectBuildingRequest.setProcessPluginConfiguration( false );
-
List<ProjectBuildingResult> results = projectBuilder.build( files, request.isRecursive(), projectBuildingRequest );
for ( ProjectBuildingResult result : results )
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=812869&r1=812868&r2=812869&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 Wed Sep 9 10:07:01 2009
@@ -273,7 +273,7 @@
fireEvent( session, null, LifecycleEventCatapult.PROJECT_STARTED );
repositoryRequest.setRemoteRepositories( currentProject.getPluginArtifactRepositories() );
- populateDefaultConfigurationForPlugins( currentProject.getBuild().getPlugins(), repositoryRequest );
+ resolveMissingPluginVersions( currentProject.getBuildPlugins(), repositoryRequest );
ClassRealm projectRealm = currentProject.getClassRealm();
if ( projectRealm != null )
@@ -722,7 +722,7 @@
populateMojoExecutionConfiguration( project, mojoExecution,
MojoExecution.Source.CLI.equals( mojoExecution.getSource() ) );
- extractMojoConfiguration( mojoExecution );
+ finalizeMojoConfiguration( mojoExecution );
calculateForkedExecutions( mojoExecution, session, project, new HashSet<MojoDescriptor>() );
@@ -1120,7 +1120,7 @@
populateMojoExecutionConfiguration( project, forkedExecution, true );
- extractMojoConfiguration( forkedExecution );
+ finalizeMojoConfiguration( forkedExecution );
calculateForkedExecutions( forkedExecution, session, project, alreadyForkedExecutions );
@@ -1163,13 +1163,11 @@
for ( List<MojoExecution> forkedExecutions : lifecycleMappings.values() )
{
- for ( Iterator<MojoExecution> it = forkedExecutions.iterator(); it.hasNext(); )
+ for ( MojoExecution forkedExecution : forkedExecutions )
{
- MojoExecution forkedExecution = it.next();
-
if ( !alreadyForkedExecutions.contains( forkedExecution.getMojoDescriptor() ) )
{
- extractMojoConfiguration( forkedExecution );
+ finalizeMojoConfiguration( forkedExecution );
calculateForkedExecutions( forkedExecution, session, project, alreadyForkedExecutions );
@@ -1282,13 +1280,9 @@
Plugin plugin = findPlugin( g, a, project.getBuildPlugins() );
- boolean managedPlugin = false;
-
if ( plugin == null && project.getPluginManagement() != null )
{
plugin = findPlugin( g, a, project.getPluginManagement().getPlugins() );
-
- managedPlugin = true;
}
MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
@@ -1306,18 +1300,6 @@
mojoConfiguration = Xpp3Dom.mergeXpp3Dom( mojoExecution.getConfiguration(), mojoConfiguration );
- /*
- * The model only contains the default configuration for those goals that are present in the plugin
- * execution. For goals invoked from the CLI or a forked execution, we need to grab the default
- * parameter values explicitly.
- */
- if ( managedPlugin || !e.getGoals().contains( mojoExecution.getGoal() ) )
- {
- Xpp3Dom defaultConfiguration = getMojoConfiguration( mojoDescriptor );
-
- mojoConfiguration = Xpp3Dom.mergeXpp3Dom( mojoConfiguration, defaultConfiguration );
- }
-
mojoExecution.setConfiguration( mojoConfiguration );
return;
@@ -1344,13 +1326,26 @@
}
}
- private void extractMojoConfiguration( MojoExecution mojoExecution )
+ /**
+ * Post-processes the effective configuration for the specified mojo execution. This step discards all parameters
+ * from the configuration that are not applicable to the mojo and injects the default values for any missing
+ * parameters.
+ *
+ * @param mojoExecution The mojo execution whose configuration should be finalized, must not be {@code null}.
+ */
+ private void finalizeMojoConfiguration( MojoExecution mojoExecution )
{
- Xpp3Dom configuration = mojoExecution.getConfiguration();
+ MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
+
+ Xpp3Dom mojoConfiguration = mojoExecution.getConfiguration();
+
+ mojoConfiguration = extractMojoConfiguration( mojoConfiguration, mojoDescriptor );
- configuration = extractMojoConfiguration( configuration, mojoExecution.getMojoDescriptor() );
+ Xpp3Dom defaultConfiguration = getMojoConfiguration( mojoDescriptor );
- mojoExecution.setConfiguration( configuration );
+ mojoConfiguration = Xpp3Dom.mergeXpp3Dom( mojoConfiguration, defaultConfiguration, Boolean.TRUE );
+
+ mojoExecution.setConfiguration( mojoConfiguration );
}
/**
@@ -1645,82 +1640,25 @@
plugin.getExecutions().add( execution );
}
}
-
- public void populateDefaultConfigurationForPlugin( Plugin plugin, RepositoryRequest repositoryRequest )
+
+ private void resolveMissingPluginVersions( Collection<Plugin> plugins, RepositoryRequest repositoryRequest )
throws LifecycleExecutionException
{
- if ( plugin.getVersion() == null )
- {
- try
- {
- resolvePluginVersion( plugin, repositoryRequest );
- }
- catch ( PluginVersionResolutionException e )
- {
- throw new LifecycleExecutionException( "Error resolving version for plugin " + plugin.getKey(), e );
- }
- }
-
- try
+ for ( Plugin plugin : plugins )
{
- // NOTE: Retrieve the plugin descriptor regardless whether there are any executions to verify the plugin
- PluginDescriptor pluginDescriptor = pluginManager.loadPlugin( plugin, repositoryRequest );
-
- for ( PluginExecution pluginExecution : plugin.getExecutions() )
+ if ( plugin.getVersion() == null )
{
- for ( String goal : pluginExecution.getGoals() )
+ try
{
- MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( goal );
-
- if ( mojoDescriptor == null )
- {
- throw new MojoNotFoundException( goal, pluginDescriptor );
- }
-
- Xpp3Dom defaultConfiguration = getMojoConfiguration( mojoDescriptor );
-
- Xpp3Dom executionConfiguration =
- Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) pluginExecution.getConfiguration(), defaultConfiguration,
- Boolean.TRUE );
-
- pluginExecution.setConfiguration( executionConfiguration );
+ resolvePluginVersion( plugin, repositoryRequest );
+ }
+ catch ( PluginVersionResolutionException e )
+ {
+ throw new LifecycleExecutionException( "Error resolving version for plugin " + plugin.getKey()
+ + ": " + e.getMessage(), e );
}
}
}
- catch ( PluginNotFoundException e )
- {
- throw new LifecycleExecutionException( "Error getting plugin information for " + plugin.getId() + ": "
- + e.getMessage(), e );
- }
- catch ( PluginResolutionException e )
- {
- throw new LifecycleExecutionException( "Error getting plugin information for " + plugin.getId() + ": "
- + e.getMessage(), e );
- }
- catch ( PluginDescriptorParsingException e )
- {
- throw new LifecycleExecutionException( "Error getting plugin information for " + plugin.getId() + ": "
- + e.getMessage(), e );
- }
- catch ( MojoNotFoundException e )
- {
- throw new LifecycleExecutionException( "Error getting plugin information for " + plugin.getId() + ": "
- + e.getMessage(), e );
- }
- catch ( InvalidPluginDescriptorException e )
- {
- throw new LifecycleExecutionException( "Error getting plugin information for " + plugin.getId() + ": "
- + e.getMessage(), e );
- }
- }
-
- public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, RepositoryRequest repositoryRequest )
- throws LifecycleExecutionException
- {
- for( Plugin plugin : plugins )
- {
- populateDefaultConfigurationForPlugin( plugin, repositoryRequest );
- }
}
public Xpp3Dom getMojoConfiguration( MojoDescriptor mojoDescriptor )
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=812869&r1=812868&r2=812869&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Wed Sep 9 10:07:01 2009
@@ -19,11 +19,9 @@
* under the License.
*/
-import java.util.Collection;
import java.util.List;
import java.util.Set;
-import org.apache.maven.artifact.repository.RepositoryRequest;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.InvalidPluginDescriptorException;
@@ -80,15 +78,6 @@
*/
Set<Plugin> getPluginsBoundByDefaultToAllLifecycles( String packaging );
- // Given a set of {@link org.apache.maven.Plugin} objects where the GAV is set we can lookup the plugin
- // descriptor and populate the default configuration.
- //
- void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, RepositoryRequest repositoryRequest )
- throws LifecycleExecutionException;
-
- void populateDefaultConfigurationForPlugin( Plugin plugin, RepositoryRequest repositoryRequest )
- throws LifecycleExecutionException;
-
void execute( MavenSession session );
/**
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=812869&r1=812868&r2=812869&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Wed Sep 9 10:07:01 2009
@@ -22,17 +22,12 @@
import org.apache.maven.Maven;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
-import org.apache.maven.artifact.repository.RepositoryRequest;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
-import org.apache.maven.lifecycle.LifecycleExecutionException;
-import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.model.Build;
import org.apache.maven.model.Model;
-import org.apache.maven.model.Plugin;
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.DefaultModelProblem;
@@ -66,9 +61,6 @@
private ProjectBuildingHelper projectBuildingHelper;
@Requirement
- private LifecycleExecutor lifecycle;
-
- @Requirement
private RepositorySystem repositorySystem;
@Requirement
@@ -127,33 +119,6 @@
project = toProject( result, configuration, listener );
}
- if ( configuration.isProcessPlugins() && configuration.isProcessPluginConfiguration() )
- {
- RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
- repositoryRequest.setLocalRepository( configuration.getLocalRepository() );
- repositoryRequest.setRemoteRepositories( project.getPluginArtifactRepositories() );
- repositoryRequest.setCache( configuration.getRepositoryCache() );
- repositoryRequest.setOffline( configuration.isOffline() );
-
- for ( Plugin plugin : project.getBuildPlugins() )
- {
- try
- {
- lifecycle.populateDefaultConfigurationForPlugin( plugin, repositoryRequest );
- }
- catch ( LifecycleExecutionException e )
- {
- if ( modelProblems == null )
- {
- modelProblems = new ArrayList<ModelProblem>();
- }
-
- modelProblems.add( new DefaultModelProblem( e.getMessage(), ModelProblem.Severity.WARNING,
- project.getModel(), e ) );
- }
- }
- }
-
ArtifactResolutionResult artifactResult = null;
if ( configuration.isResolveDependencies() )
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java?rev=812869&r1=812868&r2=812869&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java Wed Sep 9 10:07:01 2009
@@ -61,8 +61,6 @@
private boolean processPlugins;
- private boolean processPluginConfiguration;
-
private List<Profile> profiles;
private List<String> activeProfileIds;
@@ -80,7 +78,6 @@
public DefaultProjectBuildingRequest()
{
processPlugins = true;
- processPluginConfiguration = true;
profiles = new ArrayList<Profile>();
activeProfileIds = new ArrayList<String>();
inactiveProfileIds = new ArrayList<String>();
@@ -294,17 +291,6 @@
this.processPlugins = processPlugins;
return this;
}
-
- public boolean isProcessPluginConfiguration()
- {
- return processPluginConfiguration;
- }
-
- public ProjectBuildingRequest setProcessPluginConfiguration( boolean processPluginConfiguration )
- {
- this.processPluginConfiguration = processPluginConfiguration;
- return this;
- }
public ProjectBuildingRequest setResolveDependencies( boolean resolveDependencies )
{
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java?rev=812869&r1=812868&r2=812869&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java Wed Sep 9 10:07:01 2009
@@ -110,10 +110,6 @@
boolean isProcessPlugins();
- ProjectBuildingRequest setProcessPluginConfiguration( boolean processPluginConfiguration );
-
- boolean isProcessPluginConfiguration();
-
ProjectBuildingRequest setResolveDependencies( boolean resolveDependencies );
boolean isResolveDependencies();