maven - Spring Boot 无法识别 mvn liquibase cli 更改,反之亦然

标签 maven spring-boot liquibase

我遇到了 Spring Boot 和 mvn liquibase 的问题。 当我使用

提交更改时,我可以通过标签更新和回滚 liquibase
mvn liquibase:update

并回滚它们

mvn liquibase:rollback -Dliquibase.rollbackTag=0.0.0 

不幸的是,当我使用 liquibase:update 提交更改时,我无法启动我的 Spring Boot 应用程序。

org.springframework.beans.factory.BeanCreationException:创建在类路径资源[org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]中定义的名为“liquibase”的bean时出错:调用init方法失败;嵌套异常是 liquibase.exception.MigrationFailedException:更改集类路径迁移失败:db/changelog/changelog-0.0.1.xml::0.0.1::

这告诉我 Spring Boot 尝试再次运行变更集。

当我查看数据库更改日志表时,发现有具有不同部署 ID 的重复条目,这可能是问题所在吗?

Here's the screenshot

Ps:当我让 Spring boot 进行更新时,我可以运行该应用程序,但无法通过 CLI 回滚:(

这是我在 pom.xml 中的配置

    <plugins>
        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.6.3</version>

            <configuration>
                <driver>org.postgresql.Driver</driver>
                <url>connection/url>
                <username>user</username>
                <password>password</password>
                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                <rollbackTag>0.0.0</rollbackTag>
                <changeLogFile>destination of rollback file</changeLogFile>
            </configuration>
        </plugin>
    </plugins>
</build>

在application.properties中

spring.liquibase.change-log=classpath:db/changelog-master.xml spring.liquibase.test-rollback-on-update=true

我猜变更日志文件的标记是正确的,因为它在 CLI 中也不起作用。

谢谢。

最佳答案

我猜maven中的类路径与springboot应用程序中的类路径不同。 Liquibase 计算类路径并将其存储在 db 中的某个属性中(我不知道它的名称)。因此,当您使用 Maven 准备数据库,然后运行应用程序时,文件的路径是不同的,因此对于 liquibase 来说,这意味着新的更改日志文件之类的内容。

您可以通过向所有变更日志文件添加 ticalFilePath 属性来解决此问题。

关于maven - Spring Boot 无法识别 mvn liquibase cli 更改,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54981339/

相关文章:

postgresql - 如何清理 Spring Boot 应用程序中的数据库表?

java - liquibase gradle postgresql 错误的驱动程序

Liquibase 更新失败

java - 如何使用插入语句生成 liquibase 变更日志?

git - Maven-Release-Plugin:强制使用特定版本的 scm 提供程序

java - 在 Maven 存储库中使用已安装的 Java 版本

spring boot 1.0升级到2.0时java测试编译错误:'bad signature ¾4s9'

maven - Intellij Idea maven 存储库远程错误

java - 对于大型项目,如何有效地将基于maven的项目导入到Eclipse中?

spring-boot - 如何将 "Example Value"添加到 Swagger 中的参数