如何使用 jar 文件中的 Liquibase 更改日志

Posted

技术标签:

【中文标题】如何使用 jar 文件中的 Liquibase 更改日志【英文标题】:How do I use a Liquibase changelog which is in jar file 【发布时间】:2015-08-01 22:11:55 【问题描述】:

我目前在我的application.properties 中有以下内容:

liquibase.change-log=classpath:/db/changelog/db.changelog-master.xml

文件的实际路径是src/main/resources/db/changelog/db.changelog-master.xml

Liquibase 找到了更新日志,一切正常。

我已将变更日志以及项目的所有 JPA 实体和存储库移至单独的项目中,以便与其他项目共享。

第二个项目是第一个项目的 Maven 依赖项。我需要在第一个项目的application.properties 中使用什么路径来访问第二个项目中的 liquibase 变更日志?

更新

我有:

projectA.jar -> pom.xml

<dependency>
    <groupId>com.foo</groupId>
    <artifactId>projectB</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

projectA.jar -> application.properties

liquibase.change-log=classpath:/db/changelog/db.changelog-master.xml

projectB.jar -> src/main/resources/db/changelog/db.changelog-master.xml

但我得到了:

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)

【问题讨论】:

同一个。如果 jar 在类路径中,并且您没有更改 changelog 文件的包,那么一切都应该正常。 这似乎不起作用。我不明白它是如何知道路径在第二个 jar 文件中的。 我收到以下错误Caused by: java.lang.IllegalStateException: Cannot find changelog location: class path resource [db/changelog/db.changelog-master.xml] (please add changelog or check your Liquibase configuration) @JBNizet 当我在 IntelliJ 中运行测试时它工作正常,但当我在 IntelliJ 之外运行测试时失败。假设存在类路径问题? 【参考方案1】:

我是个白痴。我的本地 ~/.m2 存储库有一个旧版本的 jar,没有 Liquibase 更改日志。 mvn clean install 解决了这个问题。

【讨论】:

以上是关于如何使用 jar 文件中的 Liquibase 更改日志的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Liquibase 强制列顺序?

如何在 SpringBootApplication 中的 MyBatis 映射之前启动 Liquibase 迁移?

如何使 liquibase 的 LoadData 标签不区分大小写?

如何使用 Liquibase XML 文件进行编程

使用 Liquibase 为 Spring Boot 应用程序中的单元测试初始化​​内存 H2

Liquibase:使用带 H2 数据库的 modifyDataType 重构将 INT 自动增量列更改为 BIGINT