在多模块项目中使用 Liquibase

All*_*afe 5 java liquibase multi-module spring-boot

我有两个模块(editorengine)与一个公共数据库一起工作。对于我想使用的脚本的部署liquibase。我不想在两个地方复制相同的脚本,我想在一个地方管理它们。为此,我创建了一个单独的模块 ( database-structure),其中仅包含我的脚本和参数spring .liquibase.change-log=classpath:db/changelog/db.changelog-master.xml。我已将此模块 ( database-structure)添加为其他模块的依赖项。最终结构如下(为了紧凑,省略了类):

D:\PROJECTS\MY-PROJECT
????database-structure
?   ?   pom.xml
?   ?
?   ????src
?       ????main
?       ?   ????java
?       ?   ????resources
?       ?       ?   application.properties
?       ?       ?
?       ?       ????db
?       ?           ????changelog
?       ?               ?   db.changelog-master.xml
?       ?               ?
?       ?               ????1.0
?       ?                       db.changelog-1.0.xml
?       ?                       metadata_create.sql
?       ?                       metadata_insert_data.sql
?       ?                       metadata_rollback.sql
?       ?
?       ????test
?           ????java
????editor
?   ?   pom.xml
?   ?
?   ????src
?       ????main
?       ?   ????java
?       ?   ????resources
?       ?       ?   application.properties
?       ?       ?
?       ?       ????META-INF
?       ?               spring.factories
?       ?
?       ????test
?           ????java
?           ?   ????ru
?           ?       ????test
?           ?           ????editor
?           ?               ????EditorControllerTest.java   
?           ?
?           ????resources
?                   application.yml
?       
?
????engine
    ?   pom.xml
    ?
    ????src
        ????main
        ?   ????java
        ?   ????resources
        ?           application.yml
        ?
        ????test
            ????java
            ????resources
Run Code Online (Sandbox Code Playgroud)

但是,editor例如,当我在( EditorControllerTest.java) 中开始测试时,出现错误,即未找到 Liquibase:

Caused by: java.lang.IllegalStateException: Cannot find changelog location: class path resource [db/changelog/db.changelog-master.yaml] (please add changelog or check your Liquibase configuration)
Run Code Online (Sandbox Code Playgroud)

但是,我在模块中设置了spring.liquibase.change-log参数。为什么会被忽略?application.propertiesdatabase-structure

如果我在editor模块中指定此选项,则一切正常。如何Liquibasedatabase-structure模块中的同一位置收集所有逻辑工作?

Puc*_*uce 2

但是,我在数据库结构模块的 application.properties 中设置了 spring.liquibase.change-log 参数。为什么它被忽略?

在运行时,与任何资源或类一样,在根 ( /) 的类路径中找到的第一个 application.properties 将被选取,其他的将被忽略。