【发布时间】: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-test、integration-test和post-integration生命周期阶段,它位于包阶段之后,正是用于此类目的。 -
只是它不是集成测试。它是为产品部署创建数据库(架构、用户、权限等)的构建的一部分。
-
啊..那么完全错误,因为 maven 是构建工具而不是部署工具。看看 Chef、Puppet 或 Gradle 可能会更好。或者你可以试试 Groovy Scripting。