Liquibase includeAll не находит базовый путь - PullRequest
0 голосов
/ 18 января 2019

при переносе проекта из maven в gradle я столкнулся со следующей проблемой.

Моя файловая структура выглядит так:

Filesystem

Файл changelog-master.xml включает файл changelog-v1-0.xml, который затем должен включать каталог v1-0 со следующей строкой: <includeAll path="src/main/resources/liquibase/changelogs/v1-0/" errorIfMissingOrEmpty="true" />. Это работает просто отлично. Это: <includeAll path="/liquibase/changelogs/v1-0/" errorIfMissingOrEmpty="true" relativeToChangelogFile="true" /> нет. Я получаю следующее сообщение об ошибке:

Cannot find base path 'src/main/resources/liquibase/changelogs/changelog-v1-0.xml' 

с ликвидазой в версии 3.6.2. Я также попробовал версии 3.6.0, 3.6.1 и 3.5.5. Я использую Gradle для сборки своего проекта в версии 4.9 и плагина в версии 2.0.1, а также пробовал 1.2.4 и 2.0.0. Я перепробовал все возможные комбинации путей и с набором relativeToChangelogFile="true" или без него, и пока ничего не получалось. Мне нужно, чтобы путь был относительно файла изменений. Я также исправлял различные проблемы в jira, github и stackoverflow, и пока ничего не получалось.

Почему это не работает?

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

1 Ответ

0 голосов
/ 10 мая 2019

Я исправил эту ошибку, добавив параметр classpath к определению активности плагина liquibase в build.gradle

liquibase {
  activities {
    main {
        classpath "$projectDir/src/main/resources/liquibase"
        changeLogFile 'r1.0/r1.0-master.yaml'
        driver 'com.mysql.cj.jdbc.Driver'
        url 'jdbc:mysql://localhost:3306/dbName'
        username 'root'
        password 'password'
    }

}}

Затем в файле журнала основных изменений r1.0-master.yaml includeAll указывает на относительный путь included, где хранятся мои другие файлы журнала изменений.

databaseChangeLog:
  - includeAll:
      path: included
      relativeToChangelogFile: true
...