Do you mean the container.lookup fails?
Normally, with the metadata in the jar, the default impl (
https://github.com/apache/maven-dependency-tree/blob/master/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java)
should be returned.

If not maybe ensure the ruby plugin does not ignore the plugin dependencies
with a custom classloader.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le mer. 23 nov. 2022 à 02:10, Patrick Plenefisch <[email protected]> a
écrit :

> Getting the DependencyGraphBuilder to be on the classpath is turning out
> trickier than anticipated. I added both normal dependencies, and as a
> dependency inside the plugin, but neither seems to be resolved. Do I have
> to manually resolve this dependency inside the mojo?
>
> <plugin>
> ...
>         <dependencies>
>           <dependency>
>             <groupId>org.apache.maven.shared</groupId>
>             <artifactId>maven-dependency-tree</artifactId>
>             <version>3.2.1</version>
>           </dependency>
>         </dependencies>
>       </plugin>
>
>
>
>
>
> On Tue, Nov 22, 2022 at 10:49 AM Patrick Plenefisch <[email protected]>
> wrote:
>
> > irb(#<Maven::Polyglot::Parser:0x62c6db99>):002:0> ctx.session.container
> > => #<Java::OrgCodehausPlexus::DefaultPlexusContainer:0x3efe7086>
> >
> > Well, would you look at that! Literal hours of staring at the javadoc
> over
> > multiple days and yet somehow I missed that. Though to be fair I did type
> > .context and search the javadoc and code for "context" before I realized
> > you said "container". Though it is deprecated? Good enough for me though.
> > Thanks!
> >
> > Thanks,
> > Patrick
> >
> > On Tue, Nov 22, 2022 at 10:33 AM Romain Manni-Bucau <
> [email protected]>
> > wrote:
> >
> >> *ctx.session.container* ?
> >>
> >>
> >> Le mar. 22 nov. 2022 à 16:23, Patrick Plenefisch <[email protected]>
> a
> >> écrit :
> >>
> >> > No, how would I do that with the released version of Mojo today? I
> know
> >> the
> >> > standard version of injecting for java uses a field and an annotation,
> >> but
> >> > I'm not writing java, and I don't know how to adapt that to my
> polyglot
> >> > pom-inline code:
> >> > https://github.com/jruby/jruby/blob/master/lib/pom.rb#L209
> >> >
> >> > Patrick
> >> >
> >> > On Tue, Nov 22, 2022 at 10:13 AM Romain Manni-Bucau <
> >> [email protected]
> >> > >
> >> > wrote:
> >> >
> >> > > Hi Patrick,
> >> > >
> >> > > Did you try injecting PlexusContainer?
> >> > > It is not the most sexy and modern way to do it but it fits quite
> well
> >> > the
> >> > > scripting language since the container enables to lookup anything,
> it
> >> is
> >> > > just a matter of injecting it in the mojo then forwarding it to the
> >> > script.
> >> > >
> >> > > Side note: I assume a more modern solution is to inject the sisu
> >> > > BeanLocator but its package is not exposed to mojo (intentionally)
> so
> >> it
> >> > > can be trickier to play with ClassRealms to get it.
> >> > >
> >> > > I would also avoid the generation trick since it will also have
> >> pitfalls
> >> > > (leaks, manual registration, cache) and is not simpler.
> >> > >
> >> > > Hope it helps a bit.
> >> > >
> >> > > Romain Manni-Bucau
> >> > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >> > > <https://rmannibucau.metawerx.net/> | Old Blog
> >> > > <http://rmannibucau.wordpress.com> | Github <
> >> > > https://github.com/rmannibucau> |
> >> > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >> > > <
> >> > >
> >> >
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >> > > >
> >> > >
> >> > >
> >> > > Le mar. 22 nov. 2022 à 16:04, Patrick Plenefisch <
> [email protected]>
> >> a
> >> > > écrit :
> >> > >
> >> > > > Hi,
> >> > > > How can I query a specific dependency's *resolved* transitive
> >> > > dependencies
> >> > > > inside a class executed by a mojo? I have access to session and
> >> > project,
> >> > > > and that's it.
> >> > > > I looked at DependencyGraphBuilder and the underlying
> >> > > > ProjectDependenciesResolver, but those seem to be injected. While
> I
> >> can
> >> > > > generate a class at runtime, I don't see how to access the
> injector
> >> > even
> >> > > if
> >> > > > I have a class
> >> > > >
> >> > > > The environment I'm running inside is JRuby inside
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> https://github.com/takari/polyglot-maven/blob/master/polyglot-maven-plugin/src/main/java/org/sonatype/maven/polyglot/plugin/ExecuteMojo.java
> >> > > > which is why I can't just use an @Inject annotation. But, being
> >> JRuby,
> >> > I
> >> > > > can easily generate classes at runtime if necessary.
> >> > > >
> >> > > > How can I go about this?
> >> > > >
> >> > > > Thanks,
> >> > > >
> >> > > > Patrick
> >> > > >
> >> > >
> >> >
> >>
> >
>

Reply via email to