Liquibase : link 来自测试的主要 yaml 变更日志
Liquibase : link main yaml changelog from test
我想 link 来自 src/main/resources.. 在 src/test/resources 中的 yaml 数据库创建规则,并添加一个带有示例数据的 changelog。
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
link main 的主要资源还有其他选择吗?
这是一个 spring 引导项目。
错误堆栈跟踪:
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
给出完整路径而不是 ../../main/resources/db/changelog/db.changelog-master.yaml
编译器无法解析 .. 格式的路径。
如果文件存在于类路径中,下面足以加载文件,否则提供完整的项目上下文路径。
db/changelog/db.changelog-master.yaml
我们以这种方式包含 SQL 个文件:
- sqlFile:
encoding: utf8
path: /db/changelog/schema/schema.sql
所以尝试在开头添加斜杠。
我建议以不同的方式命名位于测试路径中的更改日志文件,因为在测试期间,main
/test
路径被合并到测试套件 运行 的一个相对路径中。我怀疑 Liquibase 认为您正在尝试递归地包含相同的文件。
只需将测试路径下的 db.changelog-master.yaml
重命名为 db.changelog-master-test.yaml
在我的情况下,从源根开始的路径按预期工作。
我想 link 来自 src/main/resources.. 在 src/test/resources 中的 yaml 数据库创建规则,并添加一个带有示例数据的 changelog。
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
link main 的主要资源还有其他选择吗? 这是一个 spring 引导项目。
错误堆栈跟踪:
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
给出完整路径而不是 ../../main/resources/db/changelog/db.changelog-master.yaml
编译器无法解析 .. 格式的路径。
如果文件存在于类路径中,下面足以加载文件,否则提供完整的项目上下文路径。
db/changelog/db.changelog-master.yaml
我们以这种方式包含 SQL 个文件:
- sqlFile:
encoding: utf8
path: /db/changelog/schema/schema.sql
所以尝试在开头添加斜杠。
我建议以不同的方式命名位于测试路径中的更改日志文件,因为在测试期间,main
/test
路径被合并到测试套件 运行 的一个相对路径中。我怀疑 Liquibase 认为您正在尝试递归地包含相同的文件。
只需将测试路径下的 db.changelog-master.yaml
重命名为 db.changelog-master-test.yaml
在我的情况下,从源根开始的路径按预期工作。