Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 从另一个Mojo以编程方式触发Mojo_Maven_Mojo - Fatal编程技术网

Maven 从另一个Mojo以编程方式触发Mojo

Maven 从另一个Mojo以编程方式触发Mojo,maven,mojo,Maven,Mojo,我可以创建一个在集成测试阶段运行的Mojo吗?触发另一个在验证阶段运行的Mojo吗? 这个问题是我的后续问题。我使用一个参数扩展了前端maven插件,该参数将集成测试中的构建失败延迟到验证阶段,以允许集成后测试阶段正确执行。这通常需要清理环境(关闭数据库、服务器等)。拉请求提交 这个解决方案相当粗糙,因为它要求用户添加一个验证执行阶段,即使它什么也不做。相反,我希望在集成测试阶段执行,以便在验证阶段自动执行Mojo(而无需用户明确地将其添加到Maven配置)。因此,以下是: <execut

我可以创建一个在集成测试阶段运行的Mojo吗?触发另一个在验证阶段运行的Mojo吗?

这个问题是我的后续问题。我使用一个参数扩展了
前端maven插件
,该参数将集成测试中的构建失败延迟到
验证
阶段,以允许
集成后测试
阶段正确执行。这通常需要清理环境(关闭数据库、服务器等)。拉请求提交

这个解决方案相当粗糙,因为它要求用户添加一个
验证
执行阶段,即使它什么也不做。相反,我希望在
集成测试
阶段执行,以便在
验证
阶段自动执行Mojo(而无需用户明确地将其添加到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>

但这似乎并不影响运行时执行。目标是一个定制的验证Mojo,它在
验证
阶段执行验证

也许我误解了你的问题,但简单地使用
mvn clean verify
将运行生命周期,包括
集成后测试
,当然还有
验证
?为什么您错过了集成后测试@khmarbaise从我之前的帖子中,它变得更加清晰,但对于这篇文章来说,这可能是一个令人困惑的细节。在
前端maven插件
的上下文中,我使用npm在
集成测试
阶段运行脚本来运行e2e测试。这包括设置我的FE和BE应用程序。我的BE应用程序需要在集成后测试阶段关闭。如果任何e2e测试失败,我的构建将在集成测试阶段失败,并且不会继续,因此不会关闭我的BE服务器。在我手动关闭它之前,它将一直在该端口上运行。我强烈建议:不要这样做。这违反了插件的原则。绑定就是生命周期。
集成后测试
阶段正是为了进行清理(例如运行服务等)。此外,我认为这听起来更像是Testcontainers等的工作……插件中不应该有参数。您应该定义一个不同的目标,如
verify
,它可以绑定到生命周期,如果发生测试失败,它将失败。例如:maven failsafe plugin?…或maven invoker plugin@khmarbaise感谢您的建议。不幸的是,我不能将
maven故障保护插件
与角度测试结合使用,但我正试图通过对
前端maven插件
的更改来复制它的行为。当然,故障保护插件在我的后端集成测试中工作良好。在
verify
阶段运行的
frontendmaven插件
中添加一个执行将使其正常工作,但我试图摆脱这个步骤。有没有具体的理由不这样做?故障保护插件必须具有在不同阶段之间通信的机制。也许我误解了你的问题,但简单地使用
mvn clean verify
将运行生命周期,包括
集成后测试
,当然还有
verify
?为什么您错过了集成后测试@khmarbaise从我之前的帖子中,它变得更加清晰,但对于这篇文章来说,这可能是一个令人困惑的细节。在
前端maven插件
的上下文中,我使用npm在
集成测试
阶段运行脚本来运行e2e测试。这包括设置我的FE和BE应用程序。我的BE应用程序需要在集成后测试阶段关闭。如果任何e2e测试失败,我的构建将在集成测试阶段失败,并且不会继续,因此不会关闭我的BE服务器。在我手动关闭它之前,它将一直在该端口上运行。我强烈建议:不要这样做。这违反了插件的原则。绑定就是生命周期。
集成后测试
阶段正是为了进行清理(例如运行服务等)。此外,我认为这听起来更像是Testcontainers等的工作……插件中不应该有参数。您应该定义一个不同的目标,如
verify
,它可以绑定到生命周期,如果发生测试失败,它将失败。例如:maven failsafe plugin?…或maven invoker plugin@khmarbaise感谢您的建议。不幸的是,我不能将
maven故障保护插件
与角度测试结合使用,但我正试图通过对
前端maven插件
的更改来复制它的行为。当然,故障保护插件在我的后端集成测试中工作良好。在
verify
阶段运行的
frontendmaven插件
中添加一个执行将使其正常工作,但我试图摆脱这个步骤。有没有具体的理由不这样做?故障保护插件必须具有在不同阶段之间通信的机制。
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);
    }
}