[ https://issues.apache.org/jira/browse/MNG-5960?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sylwester Lachiewicz reassigned MNG-5960: ----------------------------------------- Assignee: (was: Sylwester Lachiewicz) > MojoExecutor overriding resolved artifacts of concurrently built MavenProject > ----------------------------------------------------------------------------- > > Key: MNG-5960 > URL: https://issues.apache.org/jira/browse/MNG-5960 > Project: Maven > Issue Type: Bug > Affects Versions: 3.3.9, needing-scrub-3.4.0-fallout > Environment: Linux 4.2.0-23-generic #28-Ubuntu SMP Sun Dec 27 > 17:47:31 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux > (Ubuntu 15.10) > Maven 3.3.9/3.4.0-SNAPSHOT > Reporter: Fabian van der Veen > Priority: Major > Fix For: 4.x / Backlog > > > I have found an issue with respect to the {{MojoExecutor}} in {{maven-core}} > when building with multiple threads (e.g. {{-T1C}}). > I have created a small reproduction project here: > https://github.com/fvanderveen/maven-mojo-jojo (in the readme is some more > explanation of what I found to be the problem) > The reproduction, using the above code: > 1. Clone this repository (`git clone > https://github.com/fvanderveen/maven-mojo-jojo.git`) > 2. Make sure the clone works single-threaded: `mvn clean package`. (This > should succeed) > 3. Clean the workspace (`mvn clean`) > 4. Attempt multi-threaded compilation with at least 2 threads (`mvn package > -T2`) > Boiled down, it seems like the {{MojoExecutor#ensureDependenciesAreResolved}} > will cause an invocation to > {{LifecycleDependencyResolver#resolveProjectDependencies}} for _all_ projects > in the current {{MavenSession}} if it's configuring a plugin that defines > {{@Mojo(aggregator = true)}} and > {{DependencyContext#isResolutionRequiredForAggregatedProjects}} return true. > This resolving may, if triggered at an unfortunate time, override resolved > artifacts for projects that are being built concurrently. > In our case, a {{test-compile}} execution of the {{maven-compiler-plugin}} > was just configured (setting the resolved artifacts to the test-scope > artifacts), and right before its execution, the resolved artifacts got set > back to the compile-scope artifacts due to a aggregator plugin being > configured at around the same time. > Given the way the `ensureDependenciesAreResolved` is structured and what > aggregator plugins should do/depend on, I think it would make more sense to > _only_ invoke {{LifecycleDependencyResolver#resolveProjectDependencies}} for > the modules that are a (grand-)child of the current project. > I've created a maven extension (which can be placed in lib/ext) as a > temporary workaround using said change; which may be found here if any one > else is having the same problems: > https://github.com/fvanderveen/maven-non-destructive-mojo-executor -- This message was sent by Atlassian Jira (v8.3.4#803005)