Конвертировать Liquibase XML в YAML?

могу ли я автоматически конвертировать файлы журнала изменений Liquibase в формат XML до формат YAML?

3 ответов


нет ничего встроенного, но вы можете легко сделать это с помощью небольшого скрипта.

некоторые отправные точки: liquibase.parser.ChangeLogParserFactory.getInstance().getParser(".xml", resourceAccessor).parse(...) возвращает объект DatabaseChangeLog, представляющий файл журнала изменений.

liquibase.serializer.ChangeLogSerializerFactory.getInstance().getSerializer(".ya‌​ml").write(...) выведет наборы изменений в объекте DatabaseChangeLog в файл в формате yaml


Я знаю, что это немного поздно ответа; тем не менее, я изучал использование Liquibase для проекта на работе и искал что-то, чтобы сделать то, что он хотел. Я видел ответ Натан Voxland, и утилита командной строки, написанные на Java, чтобы преобразовать это. Код можно найти по адресу здесь на Github. Не стесняйтесь изменять или исправлять его и отправлять PRs; я буквально написал его через час или около того, поэтому, пожалуйста, легко судить о базе кода :). Надеюсь, это поможет в следующем человек, который ищет подобный инструмент и спотыкается здесь.


умный способ-непосредственно генерировать 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.