Folks
originally i was using 2.5 version of maven-surefire-plugin as seen here
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
this caused massive grief by DefaultPlexusContainer lookup which incorrectly
parsed the roleHint
so i backed all my dependencies of maven-surefire-plugin down to v 2.4.2 to rid
myself of the guice injector anomaly here is the debug error listing:
note that the org.codehaus.plexus.DefaultPlexusContainer roleHint is
incorrectly assigned org.apache.maven.plugins:maven-surefire-plugin:2.5:test
it should be
org.apache.maven.plugins:maven-surefire-plugin:2.5
for the lookup to work
[ERROR] 1 error
[ERROR] role: org.apache.maven.plugin.Mojo
[ERROR] roleHint: org.apache.maven.plugins:maven-surefire-plugin:2.5:test:
Guice provision errors:
[ERROR]
[ERROR] 1) No implementation for
org.apache.maven.artifact.resolver.ArtifactResolver was bound.
[ERROR] while locating org.apache.maven.plugin.surefire.SurefirePlugin
[ERROR]
[ERROR] 1 error
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.apache.maven.plugins:maven-surefire-plugin:2.5:test (default-test) on
project maven-checkstyle-plugin: Execution default-test of goal
org.apache.maven.plugins:maven-surefire-plugin:2.5:test failed: Unable to load
the mojo 'test' (or one of its required components) from the plugin
'org.apache.maven.plugins:maven-surefire-plugin:2.5'
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:211)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:140)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:314)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:151)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:445)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:168)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution
default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test
failed: Unable to load the mojo 'test' (or one of its required components) from
the plugin 'org.apache.maven.plugins:maven-surefire-plugin:2.5'
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:121)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:195)
... 19 more
Caused by: org.apache.maven.plugin.PluginContainerException: Unable to load the
mojo 'test' (or one of its required components) from the plugin
'org.apache.maven.plugins:maven-surefire-plugin:2.5'
at
org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:426)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:96)
... 20 more
Caused by:
org.codehaus.plexus.component.repository.exception.ComponentLookupException:
com.google.inject.ProvisionException: Guice provision errors:
1) Error injecting: org.apache.maven.plugin.surefire.SurefirePlugin
at ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.5,
parent: ClassRealm[maven.api, parent: null]]
while locating org.apache.maven.plugin.Mojo annotated with
@com.google.inject.name.Named(value=org.apache.maven.plugins:maven-surefire-plugin:2.5:test)
1 error
role: org.apache.maven.plugin.Mojo
roleHint: org.apache.maven.plugins:maven-surefire-plugin:2.5:test
at
org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:253)
at
org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:241)
at
org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:393)
... 21 more
Caused by: com.google.inject.ProvisionException: Guice provision errors:
1) Error injecting: org.apache.maven.plugin.surefire.SurefirePlugin
at ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.5,
parent: ClassRealm[maven.api, parent: null]]
while locating org.apache.maven.plugin.Mojo annotated with
@com.google.inject.name.Named(value=org.apache.maven.plugins:maven-surefire-plugin:2.5:test)
1 error
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:957)
at com.google.inject.Scopes$1$1.get(Scopes.java:63)
at
org.sonatype.guice.bean.locators.LazyQualifiedBean.getValue(LazyQualifiedBean.java:66)
at
org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:54)
at
org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:249)
... 23 more
Caused by: com.google.inject.ProvisionException: Guice provision errors:
1) No implementation for org.apache.maven.artifact.resolver.ArtifactResolver
was bound.
while locating org.apache.maven.plugin.surefire.SurefirePlugin
1 error
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:957)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:983)
at
org.sonatype.guice.bean.reflect.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
at
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:948)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:994)
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:944)
... 27 more
/* the correct implementation is as follows */
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<inherited>false</inherited>
<configuration>
<childDelegation>true</childDelegation>
<useManifestOnlyJar>true</useManifestOnlyJar>
<useSystemClassLoader>true</useSystemClassLoader>
<skipTests>true</skipTests>
<forkMode>never</forkMode>
<useFile>true</useFile>
<trimStackTrace>false</trimStackTrace>
<failIfNoTests>false</failIfNoTests>
<systemProperties combine.children="append">
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<classesDirectory>${project.build.directory}/target/test-classes</classesDirectory>
<property>
<!-- Pass this through to the tests (if set!) to have
them pick the right repository -->
<name>maven.repo.local</name>
<value>file://C:/DOCUME~1/NotBillGates/.m2/repository</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
I think this is perhaps what ken was alluding to about maven when bugs are
discovered
my suggestion is we clear the Guice Injector code out of maven-surefire-plugin
until we can determine DefaultPlexusContainer can correctly parse the artifact
string from
org.apache.maven.plugins:maven-surefire-plugin:2.5:test:
to
org.apache.maven.plugins:maven-surefire-plugin:2.5
will file a jira
thanks,
Martin Gainty
______________________________________________
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger
sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung
oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem
Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung.
Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung
fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le
destinataire prévu, nous te demandons avec bonté que pour satisfaire informez
l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est
interdite. Ce message sert à l'information seulement et n'aura pas n'importe
quel effet légalement obligatoire. Étant donné que les email peuvent facilement
être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité
pour le contenu fourni.
From: [email protected]
To: [email protected]
Subject: Guice Injector appears to be version-unaware
Date: Tue, 26 Oct 2010 11:12:12 -0400
Ive noticed recent introduction of Guice injector seemd to be version-unaware
of the requested plugin
Is there any way I can request Guice injector to inject a specific version of
plugin (instead of the first version of the plugin the Guice injector sees)
?
Vielen Danke/Bedankt/Merci
Martin
______________________________________________
Jogi és Bizalmassági kinyilatkoztatás/Verzicht und
Vertraulichkeitanmerkung/Note de déni et de confidentialité
Ez az üzenet bizalmas. Ha nem ön az akinek szánva volt, akkor kérjük, hogy
jelentse azt nekünk vissza. Semmiféle továbbítása vagy másolatának készítése
nem megengedett. Ez az üzenet csak ismeret cserét szolgál és semmiféle jogi
alkalmazhatósága sincs. Mivel az electronikus üzenetek könnyen
megváltoztathatóak, ezért minket semmi felelöség nem terhelhet ezen üzenet
tartalma miatt.
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger
sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung
oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem
Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung.
Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung
fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le
destinataire prévu, nous te demandons avec bonté que pour satisfaire informez
l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est
interdite. Ce message sert à l'information seulement et n'aura pas n'importe
quel effet légalement obligatoire. Étant donné que les email peuvent facilement
être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité
pour le contenu fourni.