【问题标题】:maven "catch" execution - execute cleanup on failed buildmaven “catch” 执行 - 在构建失败时执行清理
【发布时间】:2013-06-12 04:54:43
【问题描述】:

我有一个 maven 使用 exec 插件构建启动进程(数据库),然后使用其他几个插件执行(maven sql mojo)与该进程交互,最后使用第二次执行 od 关闭该进程exec 插件,绑定到后面的阶段。

现在,如果任何“中间”执行失败,我会留下一个正在运行的进程,构建开始但没有关闭。

maven 中是否有任何“尝试/最终”机制,我可以在构建失败后使用它来清理?

【问题讨论】:

  • 你能显示那个构建的 pom 吗?除了你将执行绑定到哪个生命周期阶段?
  • @khmarbaise - 在 generate-resources 中提取 postgres *.tar.gz,使用 process-resources 中的 shell 脚本启动它,之后使用各种 sql-plugin 步骤,然后在 prepare- 中使用 shell 脚本停止它包裹。 pom 是几百行,我认为只会把问题弄得一团糟
  • 这听起来像是一个集成测试,这意味着您进入了错误的阶段。有一个pre-integration-testintegration-testpost-integration 生命周期阶段,它位于包阶段之后,正是用于此类目的。
  • 只是它不是集成测试。它是为产品部署创建数据库(架构、用户、权限等)的构建的一部分。
  • 啊..那么完全错误,因为 maven 是构建工具而不是部署工具。看看 Chef、Puppet 或 Gradle 可能会更好。或者你可以试试 Groovy Scripting。

标签: java maven


【解决方案1】:

也许,如果您使用此工作流程进行测试,您可以使用诸如surefire 或failsafe 之类的测试插件来防止构建过程失败。并在数据库关闭后验证结果。简而言之,在预测试阶段启动 db,使用我上面提到的插件在单独的进程中运行测试,在端口测试阶段停止 db 并在 verify? 中验证测试结果?阶段。

Failsafe plugin

【讨论】:

  • 不错的建议,但我不这样做是为了测试。
猜你喜欢
  • 1970-01-01
  • 2016-12-02
  • 2016-09-14
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
相关资源
最近更新 更多