You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by François Guillot <fr...@gmail.com> on 2019/09/11 11:00:41 UTC
Register a Mojo from an extension
Hi,
I have a custom maven extension, that contains an EventSpy as its entry
point.
I would also like to have several Mojo implementations in my extension jar,
and make them available for consumption by users, as long as they apply the
extension.
I have a simple HelloWorldMojo, and a corresponding
META-INF/maven/plugin.xml in my extension jar.
When calling my mojo, after applying my extension, I get
[WARNING] Error injecting: HelloWorldMojo
java.lang.TypeNotPresentException: Type HelloWorldMojo not present
at org.eclipse.sisu.space.URLClassSpace.loadClass
(URLClassSpace.java:143)
at org.eclipse.sisu.space.NamedClass.load (NamedClass.java:46)
at org.eclipse.sisu.space.AbstractDeferredClass.get
(AbstractDeferredClass.java:48)
at com.google.inject.internal.ProviderInternalFactory.provision
(ProviderInternalFactory.java:85)
at
com.google.inject.internal.InternalFactoryToInitializableAdapter.provision
(InternalFactoryToInitializableAdapter.java:57)
at com.google.inject.internal.ProviderInternalFactory$1.call
(ProviderInternalFactory.java:66)
at
com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
(ProvisionListenerStackCallback.java:112)
at
com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision
(ProvisionListenerStackCallback.java:127)
at com.google.inject.internal.ProvisionListenerStackCallback.provision
(ProvisionListenerStackCallback.java:66)
at com.google.inject.internal.ProviderInternalFactory.circularGet
(ProviderInternalFactory.java:61)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get
(InternalFactoryToInitializableAdapter.java:47)
at com.google.inject.internal.InjectorImpl$1.get
(InjectorImpl.java:1050)
at org.eclipse.sisu.inject.Guice4$1.get (Guice4.java:162)
at org.eclipse.sisu.inject.LazyBeanEntry.getValue
(LazyBeanEntry.java:81)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue
(LazyPlexusBean.java:51)
at org.codehaus.plexus.DefaultPlexusContainer.lookup
(DefaultPlexusContainer.java:263)
at org.codehaus.plexus.DefaultPlexusContainer.lookup
(DefaultPlexusContainer.java:255)
at
org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo
(DefaultMavenPluginManager.java:520)
I suspect that my Mojo class is not available in the 'main' classpath, only
on the extension classpath. Is that the case ?
How can I register my mojo fro my extension then ?