簡體   English   中英

Liquibase 使用 Springboot 3 生成差異

[英]Liquibase generate diff with Springboot 3

我正在嘗試使用 liquibase 4.18.0 和 Spring Boot 3.0.1 生成 liquibase 腳本。

我收到這個錯誤:

[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:4.18.0:diff (default-cli) on project ims-backend: Execution default-cli of goal org.liquibase:liquibase-maven-plugin:4.18.0:diff failed: An API incompatibility was encountered while executing org.liquibase:liquibase-maven-plugin:4.18.0:diff: java.lang.NoSuchMethodError: 'javax.persistence.spi.PersistenceUnitInfo org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainDefaultPersistenceUnitInfo()'
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.liquibase:liquibase-maven-plugin:4.18.0
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/C:/Users/XXXX/.m2/repository/org/liquibase/liquibase-maven-plugin/4.18.0/liquibase-maven-plugin-4.18.0.jar
[ERROR] urls[1] = file:/C:/Users/XXXX/.m2/repository/org/liquibase/liquibase-core/4.18.0/liquibase-core-4.18.0.jar
[ERROR] urls[2] = file:/C:/Users/XXXX/.m2/repository/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar
[ERROR] urls[3] = file:/C:/Users/XXXX/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar
[ERROR] urls[4] = file:/C:/Users/XXXX/.m2/repository/org/yaml/snakeyaml/1.33/snakeyaml-1.33.jar
[ERROR] urls[5] = file:/C:/Users/XXXX/.m2/repository/com/opencsv/opencsv/5.7.1/opencsv-5.7.1.jar
[ERROR] urls[6] = file:/C:/Users/XXXX/.m2/repository/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar
[ERROR] urls[7] = file:/C:/Users/XXXX/.m2/repository/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar
[ERROR] urls[8] = file:/C:/Users/XXXX/.m2/repository/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4.jar
[ERROR] urls[9] = file:/C:/Users/XXXX/.m2/repository/org/liquibase/liquibase-commercial/4.18.0/liquibase-commercial-4.18.0.jar
[ERROR] urls[10] = file:/C:/Users/XXXX/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR]

看起來

org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainDefaultPersistenceUnitInfo()

現在返回

jakarta.persistence.spi.PersistenceUnitInfo

代替

javax.persistence.spi.PersistenceUnitInfo

有什么我可以做的嗎,或者是等待新的 liquibase 版本的唯一選擇?

好的,我可以解決使用 liquibase-hibernate6 而不是 liquibase-hibernate5 時的問題

<dependency>
    <groupId>org.liquibase.ext</groupId>
    <artifactId>liquibase-hibernate6</artifactId>
    <version>${liquibase.version}</version>
    <scope>test</scope>
</dependency>

但是我不得不在我的項目中將 liquibase.version 覆蓋為 4.18.0,因為它僅適用於 4.18 和 spring 引導當前使用 4.17

<liquibase.version>4.18.0</liquibase.version>

此外,我不得不改變

hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

進入

hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM