4

liquibase.integration.spring.SpringLiquibase現在、 Beanを使用してLiquibaseをSpringアプリケーションに統合しています

Java doc から、tt はsqlOutputDir、SQL が外部ファイルに出力できるように、その Bean クラスにプロパティがあることを知っているのがもっともらしいです。

ただし、この機能は最新の 2.0.5 には存在しないようです。

それで、問題は、equivalent method or functionchangeLog sql を外部ファイルに出力する現在の機能は何ですか、それとも機能が完全に完全に削除されただけですか?

ヒントをください、どうもありがとう。

4

2 に答える 2

6

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 出力のロギング (デバッグ) に役立つ可能性があります。writeSqlFileEnabledsqlOutputDir

于 2013-03-27T17:48:16.423 に答える
1

updateSQLコマンドを見てください。

于 2012-08-28T07:20:22.810 に答える