You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.1.2集成Hibernate ORM插件Gradle构建失败求助

问题

在IntelliJ中创建了基于Spring Boot 3.1.2的初始项目,未修改任何代码,但执行Gradle构建时失败。移除org.hibernate.orm插件后构建可正常完成,尝试多种方法仍无法解决。

build.gradle.kts 内容

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "3.1.2"
    id("io.spring.dependency-management") version "1.1.2"
    id("org.hibernate.orm") version "6.2.6.Final"
    id("org.graalvm.buildtools.native") version "0.9.23"
    kotlin("jvm") version "1.8.22"
    kotlin("plugin.spring") version "1.8.22"
    kotlin("plugin.jpa") version "1.8.22"
}

group = "com.example"
version = "0.0.1-SNAPSHOT"

java {
    sourceCompatibility = JavaVersion.VERSION_17
}

configurations {
    compileOnly {
        extendsFrom(configurations.annotationProcessor.get())
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.flywaydb:flyway-core")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    developmentOnly("org.springframework.boot:spring-boot-devtools")
    developmentOnly("org.springframework.boot:spring-boot-docker-compose")
    runtimeOnly("com.h2database:h2")
    runtimeOnly("org.postgresql:postgresql")
    annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += "-Xjsr305=strict"
        jvmTarget = "17"
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

hibernate {
    enhancement {
        enableAssociationManagement.set(true)
    }
}

构建错误信息

构建文件'/Users/daeyeonjoo/Examples/demo2/build.gradle.kts'第3行

应用插件请求[id: 'org.hibernate.orm', version: '6.2.6.Final']时发生异常
> 无法应用插件'org.hibernate.orm'。
   > 无法创建org.hibernate.orm.tooling.gradle.HibernateOrmSpec类型的实例。
      > 不存在JavaPluginExtension类型的扩展。当前已注册的扩展类型:[ExtraPropertiesExtension, SpringBootExtension, StandardDependencyManagementExtension, SourceSetContainer]

* 尝试:
> 使用--info或--debug选项获取更多日志输出。
> 使用--scan获取完整分析信息。
> 访问https://help.gradle.org获取更多帮助。

* 异常详情:
org.gradle.api.plugins.InvalidPluginException: 应用插件请求[id: 'org.hibernate.orm', version: '6.2.6.Final']时发生异常
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.exceptionOccurred(DefaultPluginRequestApplicator.java:222)
    ...(省略后续栈追踪内容)
解决方案

错误核心是org.hibernate.orm插件依赖Java插件的扩展,但当前插件加载顺序导致Java插件还未初始化就加载了Hibernate插件。以下是几种可行的解决方式:

  • 调整插件加载顺序:把kotlin("jvm")插件移到org.hibernate.orm之前加载。因为Kotlin JVM插件会自动应用Java插件,确保Hibernate插件加载时Java插件的扩展已经存在。修改后的plugins块如下:
plugins {
    id("org.springframework.boot") version "3.1.2"
    id("io.spring.dependency-management") version "1.1.2"
    kotlin("jvm") version "1.8.22"
    kotlin("plugin.spring") version "1.8.22"
    kotlin("plugin.jpa") version "1.8.22"
    id("org.hibernate.orm") version "6.2.6.Final"
    id("org.graalvm.buildtools.native") version "0.9.23"
}
  • 显式应用Java插件:如果不想调整顺序,可以在org.hibernate.orm插件前显式添加Java插件的引用:
plugins {
    id("java")
    id("org.springframework.boot") version "3.1.2"
    id("io.spring.dependency-management") version "1.1.2"
    id("org.hibernate.orm") version "6.2.6.Final"
    // 其他插件...
}
  • 使用Spring Boot的Hibernate增强替代:Spring Boot已经集成了Hibernate字节码增强的支持,不需要单独引入org.hibernate.orm插件。可以移除该插件,然后在build.gradle.kts中添加以下配置来启用关联管理增强:
tasks.withType<JavaCompile> {
    options.compilerArgs.add("-Xplugin:org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
}

dependencies {
    annotationProcessor("org.hibernate:hibernate-jpamodelgen:6.2.6.Final")
}

这样既可以实现相同的关联管理功能,又避免了插件冲突问题。

内容的提问来源于stack exchange,提问作者Daeyeon Joo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:46:01