Hi Stuart, Thanks again for your prompt help. But both projects have sisu-maven-plugin properly set and the generation of index files are working well.
But I think I found where the issue could be. This morning I decided to debug the build of one project in the workspace that uses my plugin using m2e launcher and surprisingly it worked. the plugin executed without errors. Before that I was running the plugin using an integration test created using takari-plugin-integration-testing. I will ask for some information in takari's list. best regards, Cristiano 2015-03-17 9:51 GMT-03:00 Stuart McCulloch <mccu...@gmail.com>: > Hi Cristiano, > > Sounds like the dependency doesn’t have an index of its components > (META-INF/sisu/javax.inject.Named) which is needed when using indexed > scanning in Sisu. > > Maven uses indexed scanning to avoid the cost of repeatedly doing full > class path scanning which, while not slow, is not suited for short-lived > cases where you want to rapidly setup and tear down the container. > > If you control the dependency you can add an index by adding the > sisu-maven-plugin to its pom.xml: > > <plugin> > <groupId>org.eclipse.sisu</groupId> > <artifactId>sisu-maven-plugin</artifactId> > <version>0.3.0</version> > <executions> > <execution> > <id>index-project</id> > <goals> > <goal>main-index</goal> > <goal>test-index</goal> <!— only necessary if you have > test components to index —> > </goals> > </execution> > </executions> > </plugin> > > > > If you don’t own the dependency you can instead generate an aggregated > index in your plugin's pom.xml: > > <plugin> > <groupId>org.eclipse.sisu</groupId> > <artifactId>sisu-maven-plugin</artifactId> > <version>0.3.0</version> > <executions> > <execution> > <id>index-dependencies</id> > <phase>package</phase> > <goals> > <goal>index</goal> > </goals> > <configuration> > <!-- same include/exclude settings as > maven-dependency-plugin --> > </configuration> > </execution> > </executions> > </plugin> > > > which would then index all components found in the plugin and its > dependencies (see http://eclipse.org/sisu/docs/api/org.eclipse.sisu.mojos/ > for the generated plugin docs) > > There’s also an annotation processor in “org.eclipse.sisu.inject” which > can generate and maintain indexes: > > > http://eclipse.org/sisu/docs/api/org.eclipse.sisu.inject/reference/org/eclipse/sisu/space/SisuIndexAPT6.html > > Finally you can also build the index yourself, as it’s just a list of > fully-qualified class names (one line for each named component). > > If you’re still having trouble send me a link to the project and I’ll > check it out. > > -- > Cheers, Stuart > > > On Tuesday, 17 March 2015 at 01:10, Cristiano Gavião wrote: > > > Thanks Stuart, > > > > I tried it and it worked when the MyPojo class was in the same jar as > > MyMojo. > > > > But when I moved MyPojo class to another jar and add that jar as a > > dependency of the plugin, I got the following error: > > > > [WARNING] Error injecting: org.c4biz.tools.build.MyMojo, > > > com.google.inject.ProvisionException: Guice provision errors:, , 1) > null > > > returned by binding at org.eclipse.sisu.wire.LocatorWiring, but > parameter > > > 4 of org.c4biz.tools.build.MyMojo.<init>() is not @Nullable, while > > > locating org.c4biz.tools.build.MyInterface, for parameter 4 at > > > org.c4biz.tools.build.MyMojo.<init>(Unknown Source), while locating > > > org.c4biz.tools.build.MyMojo, , 1 error, at > > > com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1006), > > > at > > > > com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1032), > > > at > > > > org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48), > > > at > > > > com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86), > > > at > > > > com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:55), > > > at > > > > com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:70), > > > at > > > > com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:100), > > > at > > > > org.eclipse.sisu.plexus.PlexusLifecycleManager.onProvision(PlexusLifecycleManager.java:133), > > > at > > > > com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109), > > > at > > > > com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:55), > > > at > > > > com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:68), > > > at > > > > com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47), > > > at > > > > com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:997), > > > at > > > > com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1047), > > > at > > > com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:993), > > > at com.google.inject.Scopes$1$1.get(Scopes.java:59), at > > > org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:82), > > > at > org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51), > > > at > > > > org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:260), > > > at > > > > org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:252), > > > at > > > > org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:462), > > > at > > > > org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:119) > > > > > > > > > > > Then I tried to create a custom binding in a module class as suggested > > here: https://wiki.eclipse.org/Sisu/PlexusMigration > > > > @Named > > > public class MyPluginModule extends com.google.inject.AbstractModule { > > > > public void configure() { > > > bind(MyInterface.class).annotatedWith(Names.named("default")).to( > > > MyPojo.class); > > > } > > > > > > > > > But I couldn't get any breakpoint in this configure method to work. so > > seems it is not being called. > > > > anyone have any idea how I can resolve this ? or it is a kind of > limitation? > > > > thanks, > > > > Cristiano > > > > 2015-03-16 16:57 GMT-03:00 Stuart McCulloch <mccu...@gmail.com (mailto: > mccu...@gmail.com)>: > > > > > Assuming you’re using Maven 3.1.1 or later then yes, that should work. > > > > > > -- > > > Cheers, Stuart > > > > > > > > > On Monday, 16 March 2015 at 18:09, Cristiano Gavião wrote: > > > > > > > Hello, > > > > > > > > I've create a mojo and set it to use sisu based injection. > > > > > > > > I added to this mojo a constructor like this: > > > > > > > > @Inject > > > > public MyMojo( RuntimeInformation runtimeInformation, > > > > MavenProjectHelper projectHelper, BuildContext > > > > buildContextr) { > > > > > > > > this.buildContext = buildContext; > > > > this.runtimeInformation = runtimeInformation; > > > > this.projectHelper = projectHelper; > > > > } > > > > > > > > and it worked properly. > > > > > > > > Now suppose that I have a pojo component annotated with a @Named > > > > annotation and it should be consumed by the mojo: > > > > > > > > @Named > > > > public MyPojo{ > > > > > > > > } > > > > > > > > Is it possible to inject objects from the maven classes into an > instance > > > > of this pojo as I did with the mojo above? > > > > > > > > thanks, > > > > > > > > Cristiano > > > > > > -- > > "Tudo vale a pena se a alma não é pequena..." > > > > > > > -- "Tudo vale a pena se a alma não é pequena..."