【发布时间】:2019-06-22 18:26:03
【问题描述】:
我有两个模块(editor 和 engine)可用于通用数据库。对于脚本的部署,我想使用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模块的同一位置?
【问题讨论】:
-
集中配置很有帮助。请看here
-
在这里您可以阅读所有关于属性文件以及如何指定多个文件的信息。 docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…
标签: java spring-boot liquibase multi-module