Flyway Java-based callbacksをSpringブートで実行する方法はありますか? 私は、各マイグレーションの後にいくつかのビュー定義を更新する既存のプロジェクトを変換しています。これは、いくつかの余分なロジックが必要なので、Javaによって行われます。私はそれがpl/pgsql(私たちはPostgresを使用しています)でも実行できることは知っていますが、すでにJavaでテストされています。SpringブートでFlyway Javaベースのコールバックを実行
Spring boot docsによると、コールバックスクリプトは移行と同じディレクトリに存在する必要がありますが、これはSQLベースのコールバックに対してのみ有効です。
このコードは、春ブーツなしで動作します:
Flyway flyway = new Flyway();
flyway.setDataSource(this.getDataSource());
flyway.setLocations("/db/migration");
flyway.setCallbacks(new LogMaintenanceFlywayCallback());
flyway.migrate();
私は/db/migration
で、いくつかの移行を持っているし、それぞれの後に、私は私のコールバックを実行する必要があります。それは私の現在のプロジェクトで動作し、私はSpring Bootで同じ動作をする必要があります。
それは動作します。 Javaクラスを 'db.migrations'パッケージに入れる必要があります。 –
標準で名前を付ける必要がありますか?私は 'SomeMaintenanceFlywayCallback'を作成し、' FlywayCallback'インターフェースを実装し、 'afterEachMigrate'メソッドは呼び出されませんでした。クラスの名前を 'AfterEachMigrate'に変更しようとしましたが、成功しません。これは 'db.migrations'パッケージにあり、実行されるJavaの移行が並んでいるので、ビルドパスはokです。 –
SQLの移行は 'src/main/resources/db/migration'になければなりません。 Javaの移行は 'src/main/java/db/migration'になければなりません。各ファイルは通常、 'Vxxx__some-text-here.sql'またはVxxx__MyJavaClass.java'で始まります。 –