使用 JOOQ 生成器的 Playframework Evolutions

Playframework Evolutions with JOOQ generator

我使用的项目使用 JOOQ 及其生成器从 Postgres 数据库生成 类。数据库演变由 Play Evolutions 管理。我们还使用 git 作为版本控制系统。当从 git:

获取新的 evolutions/jooq 代码时,这组工具会导致某种自引用问题

无法应用由其他团队成员创建的新表的演变,因为这些表中没有生成 类 JOOQ 导致的编译问题。

我在考虑以下解决方案:

  1. 应用 sbt 的演变 - 创建 sbt 任务 - 到目前为止未能实施,
  2. 在数据库上手动应用演化(复制粘贴脚本)- 没有意义。

堆栈:

请指教

你可以写一个插件。 当应用程序启动时,插件应用演变。

我建议在编译之前使用 SBT 生成代码。

如果有一种简单的方法 bootstrap JOOQ 代码生成器(例如通过静态方法,或通过创建生成器实例),您可以看看 here查看如何创建 bootstrap 流程的任务。

然后,如果你想在编译之前执行 SBT 任务,你可以这样做(如果你要调用任务 generateJOOQ):

compileInputs in (Compile, compile) <<= (compileInputs in (Compile, compile)) dependsOn (generateJOOQ in Compile)

拥有一个 JOOQ SBT 插件会让事情变得更容易,但我认为创建这样一个插件的维护工作不应被低估,因为需要迎合不同的 SBT 版本和 JOOQ 版本。