[ 
https://jira.codehaus.org/browse/MNG-4996?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=324796#comment-324796
 ] 

Timo Carl commented on MNG-4996:
--------------------------------

We had a similar issue with parallel builds where test scoped dependencies 
would disappear and fail test-compile step randomly.

Turns out that during parallel builds, an ill-configured aggregator module can 
overwrite the project dependencies with scopes [compile/runtime] while the 
project is in process of being built and after dependencies have been resolved 
with [compile/runtime/provided/test] scopes.

Due to this, the test classpath in our case did not have any test scoped 
dependencies on the classpath, hence failing the compilation.
To fix this issue, we removed the aggregator plugin from a child module.

Maven should not execute aggregator plugins concurrently or at least produce a 
warning that helps users figure out the root cause of the compilation failure.

The problematic code is in MojoExecutor.ensureDependenciesAreResolved():
        if ( aggregating )
        {
            Collection<String> scopesToCollect = toScopes( 
mojoDescriptor.getDependencyCollectionRequired() );
            Collection<String> scopesToResolve = toScopes( 
mojoDescriptor.getDependencyResolutionRequired() );

            if ( dependencyContext.isResolutionRequiredForAggregatedProjects( 
scopesToCollect, scopesToResolve ) )
            {
                for ( MavenProject aggregatedProject : session.getProjects() )
                {
                    if ( aggregatedProject != project )
                    {
                        lifeCycleDependencyResolver.resolveProjectDependencies( 
aggregatedProject, scopesToCollect,
                                                                                
scopesToResolve, session, aggregating,
                                                                                
Collections.<Artifact> emptySet() );
                    }
                }
            }
        }

This calls aggregatedProject.setResolvedArtifacts() and overwrites the 
previously resolved dependencies.

                
> Maven3 parallel build fails occasionally for classpath problems.
> ----------------------------------------------------------------
>
>                 Key: MNG-4996
>                 URL: https://jira.codehaus.org/browse/MNG-4996
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Plugins and Lifecycle
>    Affects Versions: 3.0.1
>         Environment: maven 3.0.1, maven 3.0
>            Reporter: Kari J. Niemi
>            Assignee: Kristian Rosenvold
>
> In a multimodule (>120 modules) maven build, the compiler plug-in would seem 
> to fail in creating a correct class-path every now and then.
> Instead of this entry in maven -X logs for a single module build:
> ----
> [DEBUG] Configuring mojo 
> 'org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile' with basic 
> configurator -->
> ..
> [DEBUG]   (f) classpathElements = 
> [/home/karniemi/"mymodulepath"/target/classes, 
> /home/karniemi/.m2/repository/org/apache/servicemix/servicemix-utils/1.2.0/servicemix-utils-1.2.0.jar,
>  
> /home/karniemi/.m2/repository/org/apache/geronimo/specs/geronimo-stax-api_1.0_spec/1.0.1/geronimo-stax-api_1.0_spec-1.0.1.jar,
>  
> /home/karniemi/.m2/repository/org/codehaus/woodstox/wstx-asl/3.2.6/wstx-asl-3.2.6.jar,
>  
> /home/karniemi/.m2/repository/org/apache/servicemix/specs/org.apache.servicemix.specs.jbi-api-1.0/1.4.0/org.apache.servicemix.specs.jbi-api-1.0-1.4.0.jar,
>  
> /home/karniemi/.m2/repository/org/apache/geronimo/specs/geronimo-activation_1.1_spec/1.0.2/geronimo-activation_1.1_spec-1.0.2.jar,
>  /home/karniemi/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar]
> ----
> every now and then I get this in the parallel build:
> ----
> [DEBUG] Configuring mojo 
> 'org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile' with basic 
> configurator -->
> ...
> [DEBUG]   (f) classpathElements = 
> [/home/karniemi/"mymodulepath"/target/classes]
> ----
> And of course the compilation fails because none of the dependencies are 
> added to the classpath. Sometimes it goes fine in the multi-module build, but 
> every now and then it fails for this.
> In both maven runs I can see that the dependencies are resolved fine:
> ----------
> [DEBUG] "mymodule":jar:DYNAMIC-SNAPSHOT
> [DEBUG]    junit:junit:jar:4.7:test
> [DEBUG]    org.apache.servicemix:servicemix-utils:jar:1.2.0:provided
> [DEBUG]       
> org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:provided
> [DEBUG]       org.codehaus.woodstox:wstx-asl:jar:3.2.6:provided
> [DEBUG]       
> org.apache.servicemix.specs:org.apache.servicemix.specs.jbi-api-1.0:jar:1.4.0:provided
>  (scope managed from compile) (version managed from 1.1.0)
> [DEBUG]          
> org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:provided
> [DEBUG]    log4j:log4j:jar:1.2.14:provided
> -----------
>  
> The  pluginArtifactMap looks like this:
> --------------------
> [DEBUG]   (s) pluginArtifactMap = 
> {org.apache.maven.plugins:maven-surefire-plugin=org.apache.maven.plugins:maven-surefire-plugin:maven-plugin:2.6:,
>  
> org.apache.maven.surefire:surefire-booter=org.apache.maven.surefire:surefire-booter:jar:2.6:compile,
>  
> org.apache.maven.surefire:surefire-api=org.apache.maven.surefire:surefire-api:jar:2.6:compile,
>  
> org.apache.maven.surefire:maven-surefire-common=org.apache.maven.surefire:maven-surefire-common:jar:2.6:compile,
>  
> org.apache.maven.shared:maven-common-artifact-filters=org.apache.maven.shared:maven-common-artifact-filters:jar:1.2:compile,
>  
> org.codehaus.plexus:plexus-utils=org.codehaus.plexus:plexus-utils:jar:2.0.5:compile,
>  junit:junit=junit:junit:jar:3.8.1:compile, 
> org.apache.maven.reporting:maven-reporting-api=org.apache.maven.reporting:maven-reporting-api:jar:2.0.9:compile}
> --------------------
> I'm really using jbi-maven-plugin for most of the modules, and that plugin 
> binds the other plugins -also the compiler-plugin -to maven life-cycle phases.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to