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

ASF GitHub Bot commented on MNG-7662:
-------------------------------------

gnodet commented on PR #948:
URL: https://github.com/apache/maven/pull/948#issuecomment-1372252880

   Also, there is an existing workaround which I think I've used somewhere, but 
I can't recall where exactly.
   The idea is to define two beans:
   ```
   @Named
   @Singleton
   class MyLazyGraphBuilder implements GraphBuilder {
       @Inject
       private final PlexusContainer container;
       private GraphBuilder delegate() {
          return container.lookup(GraphBuilder.class, "myGraphBuilder");
       }
       Result<? extends ProjectDependencyGraph> build(MavenSession session) {
           return delegate().build(session);
       }
   }
   
   @Named("myGraphBuilder")
   @SessionScoped
   class MyGraphBuilder implements GraphBuilder {
       ...
   }
   ```
   
   I still think this should be done automatically, but not sure I'll have the 
time to dig much into sisu/guice...
   
   It may be preferable to use the workaround which will work on any maven 
version imho.




> Allow Graphbuilder to use session scoped components
> ---------------------------------------------------
>
>                 Key: MNG-7662
>                 URL: https://issues.apache.org/jira/browse/MNG-7662
>             Project: Maven
>          Issue Type: Bug
>            Reporter: Christoph Läubrich
>            Priority: Major
>
> Currently DefaultMaven gets the Graphbuilder injected as a strict requirement 
> at a very early stage. This leads to the problem, that a GraphBuilder 
> implementation can not use any SessionScoped Components (because the session 
> scope is not setup yet). 
> The error then is
> {code:java}
> 1) Error in custom provider, com.google.inject.OutOfScopeException: Cannot 
> access Key[type=org.apache.maven.execution.MavenSession, annotation=[none]] 
> outside of a scoping block
>   at 
> org.apache.maven.session.scope.internal.SessionScopeModule.configure(SessionScopeModule.java:64)
>  (via modules: org.eclipse.sisu.wire.WireModule -> 
> org.apache.maven.session.scope.internal.SessionScopeModule)
>   while locating org.apache.maven.execution.MavenSession
>     for the 1st parameter of 
> org.eclipse.tycho.helper.PluginRealmHelper.<init>(Unknown Source)
>   at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
> parent: ClassRealm[plexus.core, parent: null]] (via modules: 
> org.eclipse.sisu.wire.WireModule -> 
> org.eclipse.sisu.plexus.PlexusBindingModule)
>   while locating org.eclipse.tycho.helper.PluginRealmHelper
>   at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
> parent: ClassRealm[plexus.core, parent: null]] (via modules: 
> org.eclipse.sisu.wire.WireModule -> 
> org.eclipse.sisu.plexus.PlexusBindingModule)
>   while locating org.eclipse.tycho.p2maven.InstallableUnitGenerator
>   at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
> parent: ClassRealm[plexus.core, parent: null]] (via modules: 
> org.eclipse.sisu.wire.WireModule -> 
> org.eclipse.sisu.plexus.PlexusBindingModule)
>   while locating org.eclipse.tycho.p2maven.MavenProjectDependencyProcessor
>   while locating org.eclipse.tycho.build.TychoGraphBuilder
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to