Liquibase:链接来自测试的主要Yaml Changelog

时间:2018-11-16 12:02:45

标签: java database spring spring-boot liquibase

我想从src / test / resources中的src / main / resources ..链接yaml数据库创建规则,并添加一个带有示例数据的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

时出错

还有其他选项可以从main链接主要资源吗? 这是一个春季启动项目。

错误堆栈跟踪:

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 个答案:

答案 0 :(得分:3)

我建议使用不同的名称命名位于测试路径中的changelog文件,因为在测试期间,main / test路径会合并到一个相对路径中,以供测试套件运行。我怀疑Liquibase认为您正在尝试递归包含相同的文件。

只需将测试路径下的db.changelog-master.yaml重命名为db.changelog-master-test.yaml

答案 1 :(得分:1)

给出完整的路径而不是<div id="menu"> <header> <nav> <div id="qw" class="navigation"> <ul> <li><a href="#">خانه</a></li> <li><a href="#">خدمات</a></li> <li><a href="#">درباره ما</a></li> <li><a href="#">تماس با ما</a></li> <li><a href="#">اموزش ها</a></li> </ul> </div> </nav> </header> </div>编译器将无法解析..格式的路径。

如果文件存在于类路径中,则下面的文件足以加载文件,否则提供完整的项目上下文路径。

../../main/resources/db/changelog/db.changelog-master.yaml

答案 2 :(得分:1)

我们以这种方式包含SQL文件:

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

因此,请尝试在开始处添加斜杠。

答案 3 :(得分:0)

在我的场合,源根目录中的路径按预期工作。