如何使用Hibernate Gradle插件转换遗留hbm.xml文件?
用Hibernate Gradle插件转换旧hbm.xml适配Hibernate 6
1. 引入插件
在build.gradle(Groovy DSL)中添加插件依赖,版本必须和项目使用的Hibernate核心版本完全一致:
plugins { id 'org.hibernate.orm' version '6.4.4.Final' }
如果是Kotlin DSL:
plugins { id("org.hibernate.orm") version "6.4.4.Final" }
旧版Gradle可使用buildscript方式引入:
buildscript { repositories { mavenCentral() } dependencies { classpath 'org.hibernate.orm:hibernate-gradle-plugin:6.4.4.Final' } } apply plugin: 'org.hibernate.orm'
2. 配置TransformHbmXmlTask
注册并配置转换任务,指定旧文件的输入目录和转换后文件的输出目录:
Groovy DSL示例:
tasks.register('transformHbmXml', org.hibernate.tool.gradle.task.TransformHbmXmlTask) { // 旧hbm.xml的存放目录,根据项目实际结构修改 inputDirectory = file('src/main/resources/legacy-hbm') // 转换后文件的输出目录,建议放在build目录下,避免覆盖原文件 outputDirectory = file("$buildDir/generated/resources/hibernate6-hbm") // 可选:指定项目使用的Hibernate方言,比如MySQL8Dialect // dialect = 'org.hibernate.dialect.MySQL8Dialect' } // 让资源处理任务依赖转换任务,确保编译前完成转换 processResources.dependsOn(transformHbmXml)
Kotlin DSL示例:
tasks.register<org.hibernate.tool.gradle.task.TransformHbmXmlTask>("transformHbmXml") { inputDirectory = file("src/main/resources/legacy-hbm") outputDirectory = file("$buildDir/generated/resources/hibernate6-hbm") // dialect.set("org.hibernate.dialect.MySQL8Dialect") } tasks.processResources { dependsOn(tasks.named("transformHbmXml")) }
3. 执行与验证
- 单独执行转换任务:运行
./gradlew transformHbmXml - 构建项目时自动触发:运行
./gradlew build,processResources阶段会先执行转换 - 转换前务必备份所有旧hbm.xml文件,转换完成后检查输出目录的文件,确认语法适配Hibernate 6后,再替换原文件或调整项目的配置文件加载路径
内容的提问来源于stack exchange,提问作者Ditz
相关产品推荐
相关产品推荐

