Могут ли Liquibase Autopick новые файлы наборов изменений, такие как Flyway?

Я новичок в Liquibase и Flyway. Пытался сделать несколько Hello Worlds. Я успешно запустил базовый SQL (создание вставки и т. Д.), Используя и Liquibase, и Flyway Был заинтересован в запуске их из командной строки.

Пролетный путь:

  • было довольно легко начать с
  • Мне нужно было просто поместить файл sql в правильном формате именования "V1_xxxx.sql" в правильную папку "flyway / sql" и запустить "миграцию flyway"
  • лучшая часть была в том, что он автоматически подбирал любой новый файл sql с правильным именем файла.

LiquiBase:

  • пришлось потратить некоторое время, чтобы понять и использовать его
  • Нужно дать правильное имя файла каждый раз

    liquibase --driver = com.mysql.jdbc.Driver --classpath = / path / to / classes --changeLogFile = com / example / db.changelog1.xml --url = "jdbc: mysql: // localhost / example "--username = dev migrate

    liquibase --driver = com.mysql.jdbc.Driver --classpath = / path / to / classes --changeLogFile = com / example / db.changelog2.xml --url = "jdbc: mysql: // localhost / example "--username = dev migrate

Есть ли способ в liquibase для автоматического выбора новых файлов XML? как Flyway, я мог просто дать имя папки, а Liquibase мог использовать свою таблицу DATABASECHANGELOG, чтобы найти дельты и выполнить то же самое.

Второй вопрос только для Liquibase

В Windows для успешного запуска команды мне пришлось изменить параметр changeLogFile... с...

liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=com/example/db.changelog1.xml      --url="jdbc:mysql://localhost/example" --username=dev migrate

в

liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=./db.changelog1.xml      --url="jdbc:mysql://localhost/example" --username=dev migrate

т.е. я изменил свой текущий рабочий каталог на com / example, а затем изменил параметр changeLogFile, чтобы он указывал на файл в текущей папке и выполнял команду.

Есть ли способ, которым я могу указать changeLogFile в другой папке (кроме текущей папки)

1 ответ

Одна вещь, которую вы можете сделать для упрощения использования liquibase из командной строки, - это создать файл с именем liquibase.properties и сохраните это в каталоге, где вы запускаете команду. Если я правильно помню, командная строка будет искать файлы с таким именем и использовать свойства в этом файле, а не требовать все параметры в командной строке. См. http://www.liquibase.org/documentation/liquibase.properties.html и http://www.liquibase.org/documentation/command_line.html для получения дополнительной информации. Документы там имеют это:

Если вы не хотите всегда указывать параметры в командной строке, вы можете создать файл свойств, который содержит значения по умолчанию. По умолчанию Liquibase будет искать файл с именем "liquibase.properties" в текущем рабочем каталоге, но вы можете указать альтернативное расположение с флагом --defaultsFile. Если вы указали опцию в файле свойств и указали ту же опцию в командной строке, значение в командной строке переопределит значение файла свойств.

Да, вы можете сделать так, чтобы liquibase автоматически загружал файлы из каталога. У вас должен быть простой файл changelog.xml, на который ссылаются из командной строки или файла свойств, но тогда этот журнал изменений может просто ссылаться на другой каталог, который содержит больше файлов журнала изменений. <includeAll> Для этой цели используется тег (см. http://www.liquibase.org/documentation/includeall.html).

Кроме того, да, вы можете поместить файл изменений в любое удобное для вас место.

Другие вопросы по тегам