Я использовал этот урок , чтобы создать очень простую настройку для создания и тестирования 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
звучит действительно обучающе.