29

我正在尝试将maven-plugin-testing-harness2.1 版与以下测试用例一起使用:

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>

有任何想法吗?

4

3 回答 3

60

最近我遇到了同样的例外。经过一番研究,我发现 maven-compat 插件解决了这个问题:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-compat</artifactId>
    <version>3.0.5</version>
    <scope>test</scope>
</dependency>
于 2013-05-23T06:37:19.813 回答
7

把这个留给以后遇到这个问题的人:

烟雾的答案确实有效,但请确保原始问题中 yegor256 中包含的依赖项的版本匹配。添加 org.apache.maven:maven-compat 对我不起作用,直到我将这 4 个依赖项更改为也具有版本 3.0.5。

于 2014-03-24T17:42:46.613 回答
1

目前,org.apache.maven.repository.RepositorySystem类位于 lib maven-resolver-api 中。如果添加 maven-compat 后,这里的任何人仍然收到错误,请确保添加 maven-resolver-api 工件作为依赖项。

<dependency>
  <groupId>org.apache.maven.resolver</groupId>
  <artifactId>maven-resolver-api</artifactId>
  <version>1.3.1</version>
</dependency>
于 2019-11-02T19:04:12.733 回答