【问题标题】:Using Liquibase in multi module project在多模块项目中使用 Liquibase
【发布时间】:2019-06-22 18:26:03
【问题描述】:

我有两个模块(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

但是,当我在 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)

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

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

【问题讨论】:

标签: java spring-boot liquibase multi-module


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多