【问题标题】:Exception thrown while running unit tests for maven plugin - ComponentLookupException :: NoSuchElementException :: RepositorySystem运行 Maven 插件的单元测试时抛出异常 - ComponentLookupException :: NoSuchElementException :: RepositorySystem
【发布时间】:2019-10-25 20:01:46
【问题描述】:

我正在尝试使用工件 maven-plugin-testing-harness:3.3.0 对 Maven 插件的 Mojo 运行单元测试,并具有以下依赖项。但是当我尝试“lookupEmptyMojo”时,会抛出以下异常。 有什么快速解决这个配置问题的方法吗?

...
<properties>
  <maven.api.version>3.6.2</maven.api.version>
<dependencies>
<!-- Maven plugin deps -->
<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-plugin-api</artifactId>
  <version>${maven.api.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-core</artifactId>
  <version>${maven.api.version}</version>
  <exclusions>
    <exclusion>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
    </exclusion>
  </exclusions>
</dependency>

<!-- Tests -->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.2</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.apache.maven.plugin-testing</groupId>
  <artifactId>maven-plugin-testing-harness</artifactId>
  <version>3.3.0</version>
  <scope>test</scope>
 </dependency>
</dependencies>
...

例外:

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:267)
...
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

Caused by: java.util.NoSuchElementException
at org.eclipse.sisu.inject.LocatedBeans$Itr.next(LocatedBeans.java:141)
... 28 more

【问题讨论】:

    标签: java maven unit-testing maven-plugin


    【解决方案1】:

    回来报告如何解决此问题。

    我必须添加另外两个依赖项:maven-compat 和 maven-resolver-api。

    Test-harness 使用 Maven2 类,所以如果我们使用 Maven3,我们需要添加 lib maven-compat 与我们使用的相同版本的 maven api;这个库实现了与旧 api 的向后兼容。

    RepositorySystem 是 maven-resolver-api 库中的一个接口,它与工件存储库一起使用,可以是远程的、本地的,甚至可以构建反应器或 IDE 工作区。

    依赖项被添加到 pom 中,如下所示:

    <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-api</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-compat</artifactId>
        <version>${maven.api.version}</version>
        <scope>test</scope>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多