首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用测试Harness更改Maven插件的包

如何用测试Harness更改Maven插件的包
EN

Stack Overflow用户
提问于 2019-05-08 21:26:54
回答 1查看 140关注 0票数 0

我使用本教程创建了一个非常基本的设置来创建和测试一个Maven mojo。这两门课看上去就像这样。

Mojo:

代码语言:javascript
复制
/**
 * @goal touch
 * @phase process-sources
 */
public class MyMojo extends AbstractMojo {
    public void execute() throws MojoExecutionException {
        // stuff
    }
}

测试:

代码语言:javascript
复制
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插件的强制执行,还是从一些奇怪的属性中提取出来的,我不知道。

对此包不起作用的属性是:

  • pom伪影ID
  • pom组ID
  • pom版本

错误信息是:

代码语言:javascript
复制
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听起来确实是一门教程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 05:06:30

我发现了一堆愚蠢的错误,为什么我的方法(包括上面的)不能起作用,比如:

  • Maven mojos不会像Java文件那样自动编译,您需要手动启动Maven (或者在IDE中使用Maven ->更新项目)
  • 我导入了org.junit.jupiter.api.Test而不是org.junit.Test,因此MojoRule没有被正确初始化。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56049275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档