gpt4 book ai didi

java - 具有多模块项目的 Liquibase

转载 作者:行者123 更新时间:2023-12-02 01:22:28 24 4
gpt4 key购买 nike

我的项目中有两个模块(integrationTestmain)运行集成测试。我希望在测试本身之前,我的应用程序将使用 liquibase 启动并滚动迁移,但由于我通过集成测试模块运行应用程序,liquibase 正在寻找与此模块相关的主文件,从而导致错误。因为主文件位于 miom 应用程序的模块中 (main)

我的项目的结构如下所示(为了紧凑起见,省略了一些类):

PROJECT
└───dataMigration
│ build.gradle

└───src
├───main
│ ├───java
│ │ Application.java
│ │
│ └───resources
│ │ application.yml
│ │
│ └───db
│ └───changelog
│ db.changelog-master.xml
│ db.changelog-1.0.xml

└──integrationTest
├───java
│ IntegrationTest.java

└───resources
application-integration-tests.yml

如果我运行集成测试,则会收到以下错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Cannot find changelog location: class path resource [db/changelog/db.changelog-master.xml] (please add changelog or check your Liquibase configuration)

如果我像往常一样运行我的应用程序(从 main 模块),那么一切都会正常。

如何让应用程序知道主文件位于应用程序本身的模块中,而不是集成测试模块中?

最佳答案

由于您的 resources 目录应该是 classpath 的一部分,因此您可以将主变更日志文件位置指定为:

更改日志:类路径:db/changelog/db.changelog-master.xml

关于java - 具有多模块项目的 Liquibase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com