Liquibase: ссылка на основной список изменений yaml из теста
Я хочу связать правила создания базы данных 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
4 ответа
Я бы посоветовал именовать файл журнала изменений, расположенный в пути тестирования, иначе, потому что во время теста main
/test
пути объединяются в один относительный путь для запуска набора тестов. Я подозреваю, что Liquibase считает, что вы пытаетесь рекурсивно включить один и тот же файл.
Просто переименуйте свой db.changelog-master.yaml
тестируемый путь к db.changelog-master-test.yaml
Дайте полный путь вместо ../../main/resources/db/changelog/db.changelog-master.yaml
Компилятор не может разобрать путь в.. формате.
Ниже достаточно загрузить файл, если файл присутствует в classpath, иначе укажите полный путь к контексту проекта.
db/changelog/db.changelog-master.yaml
Мы включаем файлы SQL таким образом:
- sqlFile:
encoding: utf8
path: /db/changelog/schema/schema.sql
Поэтому попробуйте добавить слеш в начале.