[ 
https://issues.apache.org/jira/browse/MNG-5960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17749841#comment-17749841
 ] 

Joep Weijers commented on MNG-5960:
-----------------------------------

This is still an issue. The example project maven-mojo-jojo still fails with:
{code:java}
$ mvn --version
Apache Maven 3.9.3 (21122926829f1ead511c958d89bd2f672198ae9f)
Maven home: C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.3
Java version: 17.0.2, vendor: Eclipse Adoptium, runtime: C:\Program 
Files\Eclipse Adoptium\jdk-17.0.2.8-hotspot
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" {code}
The Maven 
[maven-non-destructive-mojo-executor|https://github.com/fvanderveen/maven-non-destructive-mojo-executor]
 Extension to prevent this issue stopped working with Maven 3.9.0, with the 
following error:
{code:java}
[main] [ERROR] Cannot invoke 
"org.codehaus.plexus.PlexusContainer.lookup(java.lang.Class)" because 
"this.container" is null {code}

> 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, waiting-for-feedback
>
>
> 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.20.10#820010)

Reply via email to