2013-04-03 45 views
23

我試圖使用2.1 maven-plugin-testing-harness版本具有以下測試案例:組件查找例外Maven插件測試

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

測試失敗在setUp()電話:

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) 

這些依賴我在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> 

有何想法?

+0

我也有這個問題。我不認爲你找到了解決方案嗎? – ksclarke

+0

不,還沒有.. – yegor256

+1

可能的重複:http://stackoverflow.com/questions/14939341/error-injecting-defaultrepositorysystem-in-maven-plugin-testing-harness。我也有這個問題。 – Noremac

回答

42

最近我面臨同樣的例外。有點經過研究,我發現Maven的compat的插件解決了這個問題:

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

好的,這解決了它!非常感謝!但是這與什麼有關......?! – carlspring

+0

這是一種新的maven api和不適用於較新api的插件之間的兼容性層 – smoke

6

這裏離開這個的人誰運行到這個問題在未來:

煙的答案沒有工作,但要確保版本yegor256中包含的依存關係在原始問題匹配中的位置。添加org.apache.maven:在我將這4個依賴關係更改爲3.0.5版之前,maven-compat對我無效。

+0

當發生此錯誤時,maven的更改版本也是解決方案 「java.langRuntimeException:org.codehaus.plexus.component.repository。當您嘗試更新IDEA設置中的Maven存儲庫(設置 - >構建,執行,部署 - >構建工具 - > Maven - >構建工具 - >構建工具 - > Maven - > exception.ComponentLookupException:java.util.NoSuchElementException,role:org.apache.maven.execution.MavenExecutionRequestPopulator「 」 >存儲庫)。 – Krzysiek