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输出。