Liquibase: ссылка на основной список изменений yaml из теста - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу связать правила создания базы данных yaml из src / main / resources .. в src / test / resources и добавить еще один chagngelog с примерами данных.

src \ test \ resources \ db \ changelog \ db.changelog-master.yaml:

databaseChangeLog:
- include:
    file: ../../main/resources/db/changelog/db.changelog-master.yaml
- include:
    file: db/changelog/marketplace/sampleData.yaml

Но это не работает.Итак, ошибка такова: Ошибка синтаксического анализа ../../main/resources/db/changelog/db.changelog-master.yaml

Есть ли другие варианты для связи основных ресурсов с основными?Это весенний загрузочный проект.

Трассировка стека ошибок:

Caused by: liquibase.exception.ChangeLogParseException: Error parsing classpath:/db/changelog/db.changelog-master.yaml
at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:84)
at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:217)
at liquibase.Liquibase.update(Liquibase.java:190)
at liquibase.Liquibase.update(Liquibase.java:179)
at 

...

Caused by: java.io.FileNotFoundException: class path resource [../../main/resources/db/changelog/db.changelog-master.yaml] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:195)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.getResourcesAsStream(SpringLiquibase.java:504)
at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:186)
at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:27)
... 52 more

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Мы включаем файлы SQL следующим образом:

  - sqlFile:
      encoding: utf8
      path: /db/changelog/schema/schema.sql

Поэтому попробуйте добавить косую черту в начале.

0 голосов
/ 16 ноября 2018

Я бы предложил по-разному называть файл изменений, расположенный в пути тестирования, потому что во время теста пути main / test объединяются в один относительный путь для запуска набора тестов.Я подозреваю, что Liquibase считает, что вы пытаетесь включить один и тот же файл рекурсивно.

Просто переименуйте ваш db.changelog-master.yaml в тестовом пути в db.changelog-master-test.yaml

0 голосов
/ 16 ноября 2018

Укажите полный путь вместо ../../main/resources/db/changelog/db.changelog-master.yaml Компилятор не может разобрать путь в .. формате.

Ниже достаточно загрузить файл, если файл присутствует в classpath, иначе укажите полный путь к контексту проекта.

db/changelog/db.changelog-master.yaml
...