首页 > 解决方案 > 从另一个 Mojo 以编程方式触发 Mojo

问题描述

我可以让一个在阶段运行的 Mojointegration-test触发另一个在阶段运行的 Mojoverify吗?

这个问题是对我之前的问题的跟进。我扩展了frontend-maven-plugin一个参数,该参数将集成测试的构建失败延迟到verify阶段,以允许post-integration-test阶段正确执行。这通常需要清理环境(关闭数据库、服务器等)。拉取请求提交可在此处获得

该解决方案相当老套,因为它需要用户添加一个verify执行阶段,即使它不做任何事情。相反,我希望在阶段执行以在integration-test阶段期间自动执行 Mojo verify(无需用户将其显式添加到 Maven 配置中)。所以以下内容:

<execution>
    <id>npm run integration tests</id>
    <goals>
        <goal>npm</goal>
    </goals>
    <phase>integration-test</phase>
    <configuration>
        <arguments>run e2e</arguments>
        <integrationTestFailureAfterPostIntegration>true</integrationTestFailureAfterPostIntegration>
    </configuration>
</execution>

应该触发 e2e 测试在integration-test阶段运行,但还需要在verify阶段执行另一个 Mojo。

这可能吗?你会怎么做?

更新:我设法在运行时向插件添加另一个 pluginExecution,如下所示:

for (Plugin plugin : project.getBuildPlugins()) {
    if("com.github.eirslett".equals(plugin.getGroupId()) && "frontend-maven-plugin".equals(plugin.getArtifactId())){
        PluginExecution verifyExecution = new PluginExecution();
        verifyExecution.addGoal("verify");
        verifyExecution.setId("verify integration tests");
        verifyExecution.setPhase("verify");
        plugin.addExecution(verifyExecution);
    }
}

但这似乎不会影响运行时执行。目标是在阶段执行验证的自定义验证Mojoverify

标签: mavenmojo

解决方案


推荐阅读