Maven SQL插件执行顺序

Posted

技术标签:

【中文标题】Maven SQL插件执行顺序【英文标题】:Maven SQL plugin execution order 【发布时间】:2010-10-14 13:27:27 【问题描述】:

我在订购 sql 执行时遇到了一些问题。

我们在一个目录下的每个表都有一个 sql 脚本文件。例如:目录 c:\SqlScripts 中有 user.sql 和 role.sql。我们正在使用 sql maven 插件来执行这些 sql 文件。

角色表有一个指向用户表的 Foriegn 键,执行失败,因为插件试图在 user.sql 之前执行 role.sql。我不能使用 orderfile 属性,因为我们指定为 c:\SqlScripts*.sql。

我该如何克服这个问题?

我看到了 2 个解决方案:

    将所有脚本按创建顺序合并到一个文件中,创建角色的脚本在创建用户的脚本之后。

    去掉*通配符,按执行顺序指定属性中的每个文件。

    根据执行顺序对文件的名称进行编号,例如:1_user.sql、2_role.sql 并使用“升序” orderfile 属性(但不确定这是否可行,因为可能无法应用排序)

还有更优雅的解决方案吗?

【问题讨论】:

在配置 sql 插件时 POM 看起来如何? 您应该通过 srcFiles 定义文件,它将按照文件定义的顺序执行文件。 是的,但不幸的是 不采用通配符 :( 知道任何解决方法吗? 【参考方案1】:

我不能使用 orderfile 属性,因为我们指定为 c:\SqlScripts*.sql。

显然,这仅在您没有严格的订购要求时才有效。如果你这样做......

我该如何克服这个问题?

...使用允许以确定性方式处理排序的设置。

我看到了 3 个解决方案 (...)。还有更优雅的解决方案吗?

我认为你成功了。我的偏好是选项 3。

【讨论】:

我觉得最好的选择是按照我想要执行的顺序使用 但不幸的是如上所述它不接受通配符。

以上是关于Maven SQL插件执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

使用 jmeter maven 插件测试订单执行

Maven生命周期

Spring boot Flyway Jooq Code gen maven 插件顺序

你如何链接/缝合 Maven 插件?

如何使用不同的属性两次执行 Maven 插件

SQL执行顺序