component lookup exception with org.apache.maven.repository.RepositorySystem in Maven plugin testing

12,336

Solution 1

Recently I faced the same exception. After a bit researching I found that maven-compat plugin solves the problem:

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

Solution 2

Leaving this here for anyone who runs into this problem in the future:

smoke's answer does work, but make sure the versions of the dependencies included in yegor256's in the original question match. Adding org.apache.maven:maven-compat did not work for me until I had changed those 4 dependencies to also have version 3.0.5.

Solution 3

Currently, the class org.apache.maven.repository.RepositorySystem is found in the lib maven-resolver-api. If after adding maven-compat, anybody here still gets the error, make sure to add maven-resolver-api artifact as dependency as well.

<dependency>
  <groupId>org.apache.maven.resolver</groupId>
  <artifactId>maven-resolver-api</artifactId>
  <version>1.3.1</version>
</dependency>
Share:
12,336
yegor256
Author by

yegor256

Lab director at Huawei, co-founder at Zerocracy, blogger at yegor256.com, author of Elegant Objects book; architect of Zold.

Updated on June 24, 2022

Comments

  • yegor256
    yegor256 about 2 years

    I'm trying to use maven-plugin-testing-harness version 2.1 with the following test case:

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

    The test fails at the setUp() call:

    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)
    

    These dependencies I have in the 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>
    

    Any ideas?