SQL 出力を書き込むための同等の Java コマンドは次のとおりLiquibase#update(String, Writer)
です。SpringLiquibase
をサブクラス化してオーバーライドすることにより、Spring アプリでこのメソッドを呼び出すことができますafterPropertiesSet
。例えば:
@Bean
public SpringLiquibase liquibase() {
SpringLiquibase liquibase = new SpringLiquibaseWriter();
// ...
return liquibase;
}
private static class SpringLiquibaseWriter extends SpringLiquibase {
@Override
public void afterPropertiesSet() throws LiquibaseException {
try (Connection connection = getDataSource().getConnection()) {
Liquibase liquibase = createLiquibase(connection);
Writer writer; // ... get writer
liquibase.update(getContexts(), writer);
// ...
} catch (LiquibaseException | SQLException e) {
// handle
}
super.afterPropertiesSet();
}
}
への呼び出しupdate(String,Writer)
は、データベースを実際に更新せずに変更セットを実行します。への呼び出しsuper.afterPropertiesSet
は実際に liquibase の更新を実行します。
あなたが言及したjavadocにとプロパティSpringLiquibase
が言及されていることに気付きました。どうやら、これらは削除されましたが、javadoc は更新されませんでした ( CORE-1104を参照)。これらのオプションが削除された理由や、意図された代替品が何であるかはわかりません。私は、liquibase のロギングが少し不十分であることを発見したので、このアプローチは、liquibase SQL 出力のロギング (デバッグ) に役立つ可能性があります。writeSqlFileEnabled
sqlOutputDir