mirror of https://github.com/apache/maven.git
[MNG-3260] 2.1: aggregating plugins in submodules of the reactor return all projects causing a chicken/egg issue
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@808394 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3badf71251
commit
481eefc1b3
|
@ -103,7 +103,6 @@ public Set<Artifact> resolve( MavenProject project, Collection<String> scopes, R
|
|||
// FIXME setTransferListener
|
||||
|
||||
ArtifactResolutionResult result = repositorySystem.resolve( request );
|
||||
resolutionErrorHandler.throwErrors( request, result );
|
||||
|
||||
project.setArtifacts( result.getArtifacts() );
|
||||
|
||||
|
@ -123,6 +122,8 @@ public Set<Artifact> resolve( MavenProject project, Collection<String> scopes, R
|
|||
}
|
||||
project.setDependencyArtifacts( dependencyArtifacts );
|
||||
|
||||
resolutionErrorHandler.throwErrors( request, result );
|
||||
|
||||
return result.getArtifacts();
|
||||
}
|
||||
|
||||
|
|
|
@ -31,8 +31,11 @@
|
|||
import java.util.TreeSet;
|
||||
|
||||
import org.apache.maven.ProjectDependenciesResolver;
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.artifact.ArtifactUtils;
|
||||
import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
|
||||
import org.apache.maven.artifact.repository.RepositoryRequest;
|
||||
import org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException;
|
||||
import org.apache.maven.execution.BuildFailure;
|
||||
import org.apache.maven.execution.BuildSuccess;
|
||||
import org.apache.maven.execution.DefaultLifecycleEvent;
|
||||
|
@ -304,8 +307,36 @@ public void execute( MavenSession session )
|
|||
for ( MavenProject project : projectsToResolve )
|
||||
{
|
||||
repositoryRequest.setRemoteRepositories( project.getRemoteArtifactRepositories() );
|
||||
projectDependenciesResolver.resolve( project, executionPlan.getRequiredResolutionScopes(),
|
||||
repositoryRequest );
|
||||
|
||||
try
|
||||
{
|
||||
projectDependenciesResolver.resolve( project, executionPlan.getRequiredResolutionScopes(),
|
||||
repositoryRequest );
|
||||
}
|
||||
catch ( MultipleArtifactsNotFoundException e )
|
||||
{
|
||||
/*
|
||||
* MNG-2277, the check below compensates for our bad plugin support where we ended up with
|
||||
* aggregator plugins that require dependency resolution although they usually run in phases of
|
||||
* the build where project artifacts haven't been assembled yet. The prime example of this is
|
||||
* "mvn release:prepare".
|
||||
*/
|
||||
if ( projectBuild.taskSegment.aggregating
|
||||
&& areAllArtifactsInReactor( session.getProjects(), e.getMissingArtifacts() ) )
|
||||
{
|
||||
logger.warn( "The following artifacts could not be resolved at this point of the build"
|
||||
+ " but seem to be part of the reactor:" );
|
||||
for ( Artifact artifact : e.getMissingArtifacts() )
|
||||
{
|
||||
logger.warn( "o " + artifact.getId() );
|
||||
}
|
||||
logger.warn( "Try running the build up to the lifecycle phase \"package\"" );
|
||||
}
|
||||
else
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for ( MojoExecution mojoExecution : executionPlan.getExecutions() )
|
||||
|
@ -360,6 +391,27 @@ else if ( MavenExecutionRequest.REACTOR_FAIL_FAST.equals( session.getReactorFail
|
|||
fireEvent( session, null, LifecycleEventCatapult.SESSION_ENDED );
|
||||
}
|
||||
|
||||
private boolean areAllArtifactsInReactor( Collection<MavenProject> projects, Collection<Artifact> artifacts )
|
||||
{
|
||||
Set<String> projectKeys = new HashSet<String>( projects.size() * 2 );
|
||||
for ( MavenProject project : projects )
|
||||
{
|
||||
String key = ArtifactUtils.key( project.getGroupId(), project.getArtifactId(), project.getVersion() );
|
||||
projectKeys.add( key );
|
||||
}
|
||||
|
||||
for ( Artifact artifact : artifacts )
|
||||
{
|
||||
String key = ArtifactUtils.key( artifact );
|
||||
if ( !projectKeys.contains( key ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void execute( MavenSession session, MojoExecution mojoExecution, ProjectIndex projectIndex )
|
||||
throws MojoFailureException, MojoExecutionException, PluginConfigurationException, PluginManagerException
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue