Как изменить пакет подключаемого модуля Maven с помощью комплекта для тестирования - PullRequest
0 голосов
/ 09 мая 2019

Я использовал этот урок , чтобы создать очень простую настройку для создания и тестирования Maven Mojo.Два класса выглядят примерно так:

Mojo:

/**
 * @goal touch
 * @phase process-sources
 */
public class MyMojo extends AbstractMojo {
    public void execute() throws MojoExecutionException {
        // stuff
    }
}

Тест:

public class MyMojoTest {
    @Rule
    public MojoRule rule = new MojoRule();

    @Test
    public void testSomething() throws Exception {
        File pom = new File("src/test/resources/pom.xml");
        MyMojo myMojo = (MyMojo) rule.lookupMojo("touch", pom);
        Assert.assertNotNull(myMojo);
        myMojo.execute();
    }
}

Работаетдо сих пор.Затем я переместил его в свой собственный проект, чтобы понять, почему мои тесты не работают.Это продолжало работать, пока я не переместил классы в другой пакет.

По умолчанию это org.apache.maven.plugin.my, и я не уверен, является ли это каким-то образом принудительным для всех плагинов Maven или взято из какого-то странного свойства, которое я могу 'т выяснить.

Свойства, не относящиеся к этому пакету:

  • ID артефакта pom
  • ID группы pom
  • версия pom

Сообщение об ошибке:

org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
      role: org.apache.maven.plugin.Mojo
  roleHint: org.acme:maven-my-plugin:1.0.0-SNAPSHOT:touch
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:264)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:240)
    at org.codehaus.plexus.PlexusTestCase.lookup(PlexusTestCase.java:205)
    at org.apache.maven.plugin.testing.AbstractMojoTestCase.lookupMojo(AbstractMojoTestCase.java:389)
    at org.apache.maven.plugin.testing.AbstractMojoTestCase.lookupMojo(AbstractMojoTestCase.java:334)
    at org.apache.maven.plugin.testing.MojoRule.lookupMojo(MojoRule.java:164)
    at org.apache.maven.plugin.my.MyMojoTest.testSomething(MyMojoTest.java:22)

Так как мне изменить пакет?org.apache.maven.plugin.my звучит действительно обучающе.

1 Ответ

0 голосов
/ 10 мая 2019

Я обнаружил кучу глупых ошибок, из-за которых мои моджо (включая вышеупомянутые) не будут работать, например:

  • Моджо Maven не компилируются автоматически, как файлы Java, вам нужнозапустите Maven вручную (или используйте что-то вроде Maven -> Обновить проект в вашей IDE)
  • Я импортировал org.junit.jupiter.api.Test вместо org.junit.Test, поэтому MojoRule не был правильно инициализирован
...