LiquiBase – 将更改log sql输出到2.0.5中的文件的任何方法?
目前我正在使用liquibase.integration.spring.SpringLiquibase
bean将Liquibase与我的spring应用程序集成
从java doc,知道有一个属性sqlOutputDir
到该bean类,以便sql可以输出到外部文件是合理的。
但是,最新的2.0.5中似乎不存在该function。
所以,问题是,将changeLog sql输出到外部文件的当前equivalent method or function
是什么,或者该function是否已被完全删除?
请给出一个提示,非常感谢。
用于编写SQL输出的等效Java命令是: Liquibase#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.afterPropertiesSet
的调用实际上将执行liquibase更新。
我注意到你在SpringLiquibase
中提到的javadoc提到了writeSqlFileEnabled
和sqlOutputDir
属性。 显然,这些已被删除,但javadoc未更新(参见CORE-1104 )。 我不确定这些选项被删除的原因或预期的替代品是什么。 我发现liquibase日志记录有点不足,因此这种方法对于记录(调试)liquibase SQL输出可能很有用。
看一下updateSQL命令。