Java LiquiBase——有没有办法在2.0.5中将更改日志sql输出到文件中?

Java LiquiBase——有没有办法在2.0.5中将更改日志sql输出到文件中?,java,spring,liquibase,Java,Spring,Liquibase,目前,我正在使用Liquibase.integration.spring.SpringLiquibasebean将Liquibase与我的spring应用程序集成 从Javadoc中,tt似乎知道该bean类有一个属性sqlOutputDir,以便sql可以输出到外部文件 但是,在最新的2.0.5中似乎不存在该功能 所以,问题是,当前将changeLog sql输出到外部文件的等效方法或函数是什么,或者该功能已经永远被删除了 请给出提示,非常感谢。看看这个命令。编写SQL输出的等效Java命令是

目前,我正在使用
Liquibase.integration.spring.SpringLiquibase
bean将Liquibase与我的spring应用程序集成

从Javadoc中,tt似乎知道该bean类有一个属性
sqlOutputDir
,以便sql可以输出到外部文件

但是,在最新的2.0.5中似乎不存在该功能

所以,问题是,当前将changeLog sql输出到外部文件的
等效方法或函数是什么,或者该功能已经永远被删除了


请给出提示,非常感谢。

看看这个命令。

编写SQL输出的等效Java命令是:
Liquibase\35; update(String,Writer)
。您可以通过子类化
SpringLiquibase
并重写
afterPropertiesSet
在Spring应用程序中调用此方法。例如:

@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.afterPropertieSet
将实际执行液化更新


我注意到您在
SpringLiquibase
中提到的
writeSqlFileEnabled
sqlOutputDir
属性。显然,这些都被删除了,但是javadoc没有更新(参见)。我不确定这些选项被删除的原因,也不确定预期的替换是什么。我发现liquibase日志记录有点不足,因此这种方法可能有助于记录(调试)liquibase SQL输出。

谢谢,但这是运行批处理文件时的选项。我正在开发一个SpringWeb应用程序,因此调用命令行是一个奇怪的选项。它可以从ant甚至java(
liquibase.integration.commandline.Main.Main()
)调用。但是您计划如何处理从SpringSQL生成的数据呢?谢谢,这非常有用。希望liquibase可以在以后的版本中添加sql输出。