3

私が使用しているプロジェクトJOOQとそのジェネレーターを使用して、データベースからクラスを生成しPostgresます。データベースの進化は によって管理されPlay Evolutionsます。gitまた、リビジョン管理システムとしても使用しています。この一連のツールは、から新しいevolutions/jooqコードを取得する際に、一種の自己参照の問題を引き起こしますgit:

JOOQ他のチーム メンバーによって作成された新しいテーブルの進化は、これらのテーブルから生成されたクラスがないために発生するコンパイルの問題により適用できません。

私は次の解決策を考えていました:

  1. sbt からの進化の適用 - sbt タスクの作成 - これまで実装に失敗しました。
  2. データベースに進化を手動で適用する (コピー ペースト スクリプト) - 意味がありません。

スタック:

  • PlayFramework 2.3.8
  • ジョーク 3.5.3
  • Java 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 に答える