Index: src/main/java/org/apache/maven/plugin/install/InstallMojo.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- src/main/java/org/apache/maven/plugin/install/InstallMojo.java (revision 1695086) +++ src/main/java/org/apache/maven/plugin/install/InstallMojo.java (revision ) @@ -20,12 +20,9 @@ */ import java.io.File; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.installer.ArtifactInstallationException; @@ -48,18 +45,8 @@ public class InstallMojo extends AbstractInstallMojo { - /** - * When building with multiple threads, reaching the last project doesn't have to mean that all projects are ready - * to be installed */ - private static final AtomicInteger readyProjectsCounter = new AtomicInteger(); - - private static final List installRequests = - Collections.synchronizedList( new ArrayList() ); - - /** - */ @Parameter( defaultValue = "${project}", readonly = true, required = true ) private MavenProject project; @@ -127,19 +114,27 @@ } else { - installRequests.add( currentExecutionInstallRequest ); addedInstallRequest = true; } } - boolean projectsReady = readyProjectsCounter.incrementAndGet() == reactorProjects.size(); + MavenProject lastProject = reactorProjects.get( reactorProjects.size() - 1 ); + boolean projectsReady = this.project.equals(lastProject); + if ( projectsReady ) { - synchronized ( installRequests ) - { - while ( !installRequests.isEmpty() ) - { - installProject( installRequests.remove( 0 ) ); + if (!skip) { + synchronized (reactorProjects) { + for (MavenProject installProject : reactorProjects) { + InstallConfiguration config = InstallConfiguration.from(installProject); + + if (!config.skip()) { + installProject(new InstallRequest() + .setProject(installProject) + .setCreateChecksum(config.createChecksum()) + .setUpdateReleaseInfo(config.updateReleaseInfo())); + } + } } } }