Hi.

I have been updating components in our application and noticed I could
update Maven Resolver as well. So I did and my build broke. It broke
because `org.eclipse.aether.impl.DefaultServiceLocator` is now
`@Deprecated` and we have it set up to fail the build when we use
deprecated APIs.

I started looking around and found this comment above
`DefaultServiceLocator`: "Use some out-of-the-box DI implementation
instead." OK, I thought, let's try it.

[...2 days later...]

I tried several approaches to get my app to instantiate and initialize
Maven Resolver components.

My successful attempt was to use `spring-guice` and to just use
`@EnableGuiceModules` and create a method on `@Configuration` class that
would return `@Bean` of `org.eclipse.aether.impl.guice.AetherModule`.
But this does not get me the entire system, it seems. So I had to look
around more and then I found
`org.apache.maven.repository.internal.MavenResolverModule`, which seem
more complete. However, even after using `MavenResolverModule`, I had to
add 33 more `bind()` statements into my own Guice `AbstractModule` bean
instance to get it to instantiate all the things it wants to use.

Is this how it is supposed to be done?

I had few dead ends before that successful attempt:

I tried using Spring's `Jsr330ScopeMetadataResolver`. It does find the
annotated classes but it ends up trying to register some of the beans
twice because they have the same name under default bean naming scheme
E.g.,
`org.eclipse.aether.internal.impl.synccontext.legacy.DefaultSyncContextFactory`
and
`org.eclipse.aether.internal.impl.synccontext.DefaultSyncContextFactory`
are both found and end up having the same bean name because the class
name is the same. Has anyone tried this route successfully, possibly
using some sort of different bean naming sheme?

Another approach I tried was to use Eclipse Sisu's `WireModule` instead
of the `MavenResolverModule` and my custom module. ... I actually do not
remember the details why it failed. I think it was something about
duplicate beans, too.

Do you guys have any success stories of how you did this entirely
without Guice / Sisu with just Spring Boot? What is the state of the art
approach to this in 2021?

-- 
VH


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to