2013-04-03 5 views
23

Ich versuche maven-plugin-testing-harness Version 2.1 mit dem folgenden Testfall zu verwenden:Komponente Lookup Ausnahme mit org.apache.maven.repository.RepositorySystem in Maven Plugin Testen

public class FooTest extends AbstractMojoTestCase { 
    @Override 
    protected void setUp() throws Exception { 
    super.setUp(); 
    } 
    public void testSomething() throws Exception { 
    // todo 
    } 
} 

Der Test am setUp() Aufruf fehlschlägt:

org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException 
    role: org.apache.maven.repository.RepositorySystem 
roleHint: 
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:257) 
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:245) 
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:239) 
    at org.codehaus.plexus.PlexusTestCase.lookup(PlexusTestCase.java:206) 
    at org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:118) 
    at foo.FooTest.setUp(FooTest.java:54) 

Diese Abhängigkeiten habe ich in der pom.xml:

<dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-plugin-api</artifactId> 
     <version>3.0.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-model</artifactId> 
     <version>3.0.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-core</artifactId> 
     <version>3.0.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.plugin-testing</groupId> 
     <artifactId>maven-plugin-testing-harness</artifactId> 
     <version>2.1</version> 
     <scope>test</scope> 
    </dependency> 

Irgendwelche Ideen?

+0

Ich habe auch dieses Problem. Ich nehme an, du hast keine Lösung gefunden, oder? – ksclarke

+0

Nein, noch nicht .. – yegor256

+1

Mögliche Duplikate: http://stackoverflow.com/questions/14939341/error-injecting-defaultrepositorysystem-in-maven-plugin-testing-harness. Ich habe dieses Problem auch. – Noremac

Antwort

42

Kürzlich sah ich die gleiche Ausnahme. Nach einem wenig forsch fand ich, dass Maven-compat-Plugin das Problem löst:

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-compat</artifactId> 
    <version>3.0.5</version> 
    <scope>test</scope> 
</dependency> 
+0

Okay, das hat es gelöst! Danke vielmals! Aber was hat das mit irgendetwas zu tun ...?! – carlspring

+0

Dies ist eine Art der Kompatibilität zwischen neueren Maven API und Plugins, die nicht für die neuere API sind – smoke

6

Weggehen dies hier für alle, die in dieses Problem in Zukunft läuft:

Rauch Antwort funktioniert, aber stellen Sie sicher, dass die Versionen der Abhängigkeiten in yegor256 in der ursprünglichen Frage übereinstimmen. Das Hinzufügen von org.apache.maven: maven-compat funktionierte für mich nicht, bis ich diese 4 Abhängigkeiten geändert hatte, um auch Version 3.0.5 zu haben.

+0

Änderung der Version von Maven ist auch die Lösung, wenn Sie diesen Fehler "java.langRuntimeException: org.codehaus.plexus.component.repository. exception.ComponentLookupException: java.util.NoSuchElementException, role: org.apache.maven.execution.MavenExecutionRequestPopulator " während Sie versuchen, Maven-Repositorys in IDEA-Einstellungen zu aktualisieren (Einstellungen -> Build, Ausführung, Bereitstellung -> Build Tools -> Maven - > Repositories). – Krzysiek

Verwandte Themen