[
https://issues.apache.org/jira/browse/MNG-8656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Guillaume Nodet updated MNG-8656:
---------------------------------
Fix Version/s: 5.0
> Maven cannot be embedded in applications that have upgraded Guice to 7.0+
> -------------------------------------------------------------------------
>
> Key: MNG-8656
> URL: https://issues.apache.org/jira/browse/MNG-8656
> Project: Maven
> Issue Type: Bug
> Components: Core
> Affects Versions: 3.9.9
> Reporter: Basil Crow
> Priority: Major
> Fix For: 5.0
>
>
> With Java 17, install Jenkins 2.503, create a Maven installation for Maven
> 3.9.9, and create a Maven project building e.g.
> https://github.com/basil/simple-maven-project-with-tests. The job should
> succeed.
> Now run the same job against https://github.com/jenkinsci/jenkins/pull/8889
> which upgrades Guice from 6.0 (which supports both {{javax.inject}} and
> {{jakarta.inject}} imports) to 7.0 (which only supports jakarta.inject
> imports). The job fails with:
> {noformat}
> java.lang.IllegalArgumentException: org.eclipse.sisu.Parameters is not a
> binding annotation. Please annotate it with @BindingAnnotation.
> at
> com.google.common.base.Preconditions.checkArgument(Preconditions.java:218)
> at com.google.inject.Key.ensureIsBindingAnnotation(Key.java:382)
> at com.google.inject.Key.strategyFor(Key.java:370)
> at com.google.inject.Key.get(Key.java:229)
> at org.eclipse.sisu.wire.ParameterKeys.<clinit>(ParameterKeys.java:28)
> Caused: java.lang.ExceptionInInitializerError
> at
> org.eclipse.sisu.wire.DependencyAnalyzer.<init>(DependencyAnalyzer.java:93)
> at org.eclipse.sisu.wire.ElementAnalyzer.<init>(ElementAnalyzer.java:104)
> at org.eclipse.sisu.wire.WireModule.configure(WireModule.java:74)
> at
> com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)
> at com.google.inject.spi.Elements.getElements(Elements.java:113)
> at
> com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)
> at
> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
> at com.google.inject.Guice.createInjector(Guice.java:87)
> at com.google.inject.Guice.createInjector(Guice.java:69)
> at com.google.inject.Guice.createInjector(Guice.java:59)
> at
> org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:481)
> at
> org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:206)
> at
> org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:168)
> at
> hudson.maven.MavenEmbedderUtils.buildPlexusContainer(MavenEmbedderUtils.java:166)
> at
> hudson.maven.MavenEmbedderUtils.buildPlexusContainer(MavenEmbedderUtils.java:159)
> at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:110)
> at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:137)
> at hudson.maven.MavenUtil.createEmbedder(MavenUtil.java:211)
> at
> hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1324)
> at
> hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1124)
> at hudson.FilePath.act(FilePath.java:1236)
> at hudson.FilePath.act(FilePath.java:1219)
> at
> hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:985)
> at
> hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:689)
> at
> hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:526)
> at hudson.model.Run.execute(Run.java:1895)
> at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
> at hudson.model.ResourceController.execute(ResourceController.java:101)
> at hudson.model.Executor.run(Executor.java:442)
> {noformat}
> This is blocking the Jenkins project from upgrading Guice from 6.0 to 7.0.
> This problem was previously raised in MNG-8027, where it was suggested that
> Maven moving away from Guice may be a long-term direction that resolves this
> problem. As long the above symptom persists, the problem remains unresolved.
> Closing the ticket based on a future plan that has not yet been implemented
> does not eliminate the current problem. This ticket tracks the current
> problem—namely, that Maven cannot currently be embedded into an application
> running the latest version of Guice. It ought to be possible to embed Maven
> into any application with up-to-date dependencies; otherwise, Maven would be
> holding that application back. When Maven can be embedded into an application
> running up-to-date dependencies, this ticket can be closed—regardless of how
> that goal is achieved (e.g., Maven upgrading to Guice 7 or later, Maven
> upgrading to Guice 6.x and migrating from {{javax.inject}} to
> {{jakarta.inject}}, Maven moving away from Guice as described in MNG-8028, or
> another solution entirely).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)