liquibase-maven-plugin 错误 jakarta/validation/ValidatorFactory

问题描述 投票:0回答:1
我正在将 liquibase-maven-plugin 集成到我的 Spring Boot 项目中。

我可以使用插件

mvn liquibase:update

mvn liquibase:dropAll
 正常工作。

但是当我尝试使用

mvn liquibase:diff

 生成新的变更日志文件时,我收到此错误,但无法解决。

[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:4.23.2:diff (default-cli) on project work-with-liquibase: Execution default-cli of goal org.liquibase:liquibase-maven-plugin:4.23.2:diff failed: A required class was missing while executing org.liquibase:liquibase-maven-plugin:4.23.2:diff: jakarta/validation/ValidatorFactory


您能帮我了解插件需要哪些依赖项吗?是否可能存在版本不兼容的错误?文档对此不是很清楚。 预先感谢任何愿意帮助我的人。

pom.xml

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.1</version> <relativePath/> </parent> <properties> <spring.boot.version>${project.parent.version}</spring.boot.version> <java.version>17</java.version> <liquibase.maven>4.23.2</liquibase.maven> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>8.0.1.Final</version> </dependency> <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>${liquibase.maven}</version> </dependency> </dependencies> <plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>${liquibase.maven}</version> <configuration> <propertyFile>src/main/resources/liquibase/liquibase-local.properties</propertyFile> </configuration> <dependencies> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version> </dependency> <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>${liquibase.maven}</version> </dependency> <dependency> <groupId>org.liquibase.ext</groupId> <artifactId>liquibase-hibernate6</artifactId> <version>${liquibase.maven}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>${spring.boot.version}</version> </dependency> </dependencies> </plugin>

liquibase-local.properties

driver: org.postgresql.Driver url=jdbc:postgresql://localhost:5432/my-db username=username password=password changeLogFile=src/main/resources/liquibase/changelog/db.changelog-master.xml outputChangeLogFile=src/main/resources/liquibase/changelog/db.changelog-master.xml diffChangeLogFile=src/main/resources/liquibase/changelog/db.changelog_new.sql databaseChangeLogTableName=myproject_databasechangelog databaseChangeLogLockTableName=myproject_databasechangeloglock referenceUrl=hibernate:spring:com.myproject.entities?dialect=org.hibernate.dialect.PostgreSQLDialect&hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy #referenceUrl=hibernate:spring:com.myproject.entities?dialect=org.hibernate.dialect.PostgreSQLDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

db.changelog-master.xml

<?xml version="1.0" encoding="UTF-8" ?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd"> <include file="liquibase/changelog/db.changelog_v1.sql" relativeToChangelogFile="false"/> <include file="liquibase/changelog/db.changelog_v2.sql" relativeToChangelogFile="false"/> </databaseChangeLog>
    
java hibernate maven jpa liquibase
1个回答
0
投票
我面临着完全相同的场景,只是我没有使用

mvn liquibase:update

也没有使用
mvn liquibase:dropAll

对我来说,它发现

liquibase-maven-plugin

 有自己的依赖项,并且 
ValidationFactory
 中的 
jakarta.persistence-api
 丢失了。我通过将 
jakarta.persistence-api
 的依赖项显式添加到 Liquibase 插件来解决了这个问题:

<plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>${liquibase.version}</version> <dependencies> <dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> <version>${jakarta.validation.api.version}</version> </dependency> </dependencies> </plugin>
    
© www.soinside.com 2019 - 2024. All rights reserved.