Возникает исключение при запуске модульных тестов для подключаемого модуля maven - ComponentLookupException :: NoSuchElementException :: RepositorySystem - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь запустить модульные тесты для Mojo подключаемого модуля Maven с использованием артефакта maven-plugin-testing-harness: 3.3.0 со следующими зависимостями. Но когда я пытаюсь «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

1 Ответ

0 голосов
/ 02 ноября 2019

Возвращаясь, чтобы сообщить, как устранить эту проблему.

Мне пришлось добавить две другие зависимости: 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>
...