3

我使用的项目使用它的生成器从数据库JOOQ生成类。Postgres数据库演变由Play Evolutions. 我们还git用作修订控制系统。当从以下位置获取新的进化/jooq 代码时,这组工具会导致某种自引用问题git

JOOQ由于缺少从这些表中生成的类而导致编译问题,因此无法应用其他团队成员创建的新表的演变。

我正在考虑以下解决方案:

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

堆:

  • 播放框架 2.3.8
  • Jooq 3.5.3
  • 爪哇 8

请指教。

4

2 回答 2

2

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

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

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

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

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

于 2015-03-19T15:46:22.263 回答
1

你可以写一个插件。当应用程序启动时,插件会应用进化。

于 2015-03-17T12:33:52.457 回答