Howdy,

sorry for late reply, I did some experimentation, and came up with this:
https://github.com/cstamas/override-maven-component

It seems overriding the core component from (core) extension wildly differs
HOW that component to be overridden is defined in core in the first place...

Take a look, and until then I will try to dust off my memories as well...
T

On Wed, May 1, 2024 at 3:11 AM Francois-Xavier Bonnet <
francois-xavier.bon...@centraliens.net> wrote:

> Thanks Tamas,
>
> I am using Maven 3.9.6 and building my extension with java 11
> The project I am using to test the extension is built with Maven 3.9.6 and
> java 11 and I can tell the extension is loaded because it also contains an
> EventSpy that logs some stuff.
> This is the code for my custom ProjectDepedencyResolver but it is not
> loaded. What am I doing wrong?
>
> import org.apache.maven.project.*;
> import org.codehaus.plexus.component.annotations.Component;
> import org.eclipse.sisu.Priority;
>
> import javax.inject.Inject;
> import javax.inject.Named;
>
> @Named
> @Component(role = ProjectDependenciesResolver.class)
> @Priority(999)
> public class CustomProjectDependencyResolver extends
> DefaultProjectDependenciesResolver implements ProjectDependenciesResolver {
>
>     @Inject
>     public CustomProjectDependencyResolver() {
>     }
>
>     @Override
>     public DependencyResolutionResult resolve(DependencyResolutionRequest
> request) throws DependencyResolutionException {
>         throw new RuntimeException(); // just crashing for now to check if
> this class is properly injected
>     }
> }
>
> On Wed, 1 May 2024 at 08:54, Tamás Cservenák <ta...@cservenak.net> wrote:
>
> > Howdy,
> >
> > IF you target latest Maven 3.9.x (uses Sisu 0.9.0.M2), then:
> > - use max Java 17 bytecode
> > - use JSR330 instead of plexus annotations
> > - use org.eclipse.sisu.Priority annotation to override a component
> >
> > IF you target Maven 3.8.x or so, similar, but use Java 11 bytecode max
> >
> > Thanks
> > T
> >
> >
> > On Wed, May 1, 2024 at 12:42 AM Francois-Xavier Bonnet <
> > fx.bon...@gmail.com>
> > wrote:
> >
> > > Hey there,
> > >
> > > I am writing an extension that needs to replace the
> > > default ProjectDependenciesResolver with a custom one.
> > > According to the documentation I think I should be able to do it: "The
> > > mechanism allows extensions to either replace default Sisu components
> > with
> > > custom ones or add new components which are used at run time."
> > > But I could not figure out how to do it or find any example.
> > >
> > > I have tried to create a new class like this:
> > >
> > > @Component(role = ProjectDependenciesResolver.class)
> > > public class CustomProjectDependencyResolver implements
> > > ProjectDependenciesResolver {
> > > ...
> > > }
> > >
> > > This did not work.
> > >
> >
>

Reply via email to