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