まず、背景を少し。私は一連の Java アプリケーションを持っています。一部は JPA に基づいており、一部はそうではありません。データベースを作成するために、現在 Hibernates スキーマ エクスポートを使用して、JPA を使用するデータベース用の作成スクリプトを生成しています。JPA を使用していない場合は、手動でスクリプトを生成します。これらは、ANT を使用したアプリケーションのインストール中に実行されます。更新の場合、アプリケーション インストーラーは更新スクリプトをデータベースに適用するだけです。
データベース更新の管理を改善するために、Flyway と Liquibase を検討しています。どちらも私が望むことをほぼ実行しているようです (余談ですが、既存のすべての SQL/DDL スクリプトがあるため、現時点では Flyway を優先しています)。私が見ることができる問題は、両方がデータベースを直接更新することです。これは多くのインストールでは問題ありませんが、すべてではありません。
私がやりたいことは、データベースに対して Flyway/Liquibase を実行し、データベースを最新の状態にするために必要なすべての更新を組み込んだ更新スクリプトを生成することです。これには、Flyway/Liquibase が独自のテーブルに加える必要がある変更も含まれます。これにより、私 (またはより重要なデータベース管理者) は、アプリケーションの外部で更新スクリプトを実行してデータベースを更新できます。次に、アプリケーション内で Flyway/Liquibase を純粋に使用して、データベースが最新であることを確認できます。
Flyway、Liquibase、またはその他のツールでこれを行うことは可能ですか?