将Liquibase XML转换为YAML?

时间:2014-04-09 16:28:23

标签: xml yaml liquibase

我可以自动将XML format中的Liquibase更改日志文件转换为YAML format吗?

3 个答案:

答案 0 :(得分:9)

内置任何内容,但您可以通过一些脚本轻松完成。

一些起点: liquibase.parser.ChangeLogParserFactory.getInstance().getParser(".xml", resourceAccessor).parse(...)将返回表示changelog文件的DatabaseChangeLog对象。

liquibase.serializer.ChangeLogSerializerFactory.getInstance().getSerializer(".ya‌​ml").write(...)会将DatabaseChangeLog对象中的changeSets输出为yaml格式的文件

答案 1 :(得分:8)

我知道答案有点晚了;然而,我正在考虑将Liquibase用于工作项目,并且正在寻找能够做他想要的东西的东西。我看到了Nathan Voxland的回答并创建了一个用Java编写的命令行实用程序来转换它。代码可以在Github上的here找到。随意修改或修复它并发送PR;我确实在一个小时左右写了它,所以请轻松判断代码库:)。希望这将有助于下一个寻找类似工具的人,并在这里绊倒。

答案 2 :(得分:2)

智能方式是直接生成yaml而不是xml,Liquibase提供了这个功能OOB。 您只需要将输出changeLogFile文件的扩展名更改为.yaml,liquibase就能很好地理解您(使用liquibase-3.6.0 进行测试)。

例如:我为Postgres DB运行了此命令:

liquibase --driver=org.postgresql.Driver 
          --classpath=\path\to\postgresql-9.0-801.jdbc4.jar
          --changeLogFile=D:\Liquibase\changeLog.yaml 
          --url="jdbc:postgresql://localhost:5432/db_name" 
          --username=postgres 
          --password=postgres 
          --logLevel=debug generateChangeLog

警告:为了便于阅读,添加了新行。

现在您知道如果将输出文件的扩展名更改为.xml

会发生什么

PS:如果liquibase命令不起作用,请尝试使用java -jar liquibase.jar