如何在Gradle中启用Hibernate字节码增强

4
如何使用gradle启用插件?很遗憾,我在当前设置下无法正常工作:
build.gradle.kts:
plugins {
    id("org.hibernate.orm") version "5.4.17.Final"
}

tasks.withType<org.hibernate.orm.tooling.gradle.EnhanceTask>().configureEach {
    options.enableLazyInitialization = true
    options.enableDirtyTracking = true
    options.enableAssociationManagement = true
}

settings.gradle.kts:

pluginManagement {
    resolutionStrategy {
        eachPlugin {
            if (requested.id.id == "org.hibernate.orm") {
                useModule("org.hibernate:hibernate-gradle-plugin:${requested.version}")
            }
        }
    }
}

我不确定插件是否正常工作,我该如何检查插件是否启用?没有控制台输出之类的东西。而且一些功能在插件正确设置时应该是工作的,但现在它们并没有工作。

2个回答

2

解决插件依赖的好方法!

以下是我认为使用Kotlin DSL配置插件的正确方式:

hibernate {
    enhance(closureOf<org.hibernate.orm.tooling.gradle.EnhanceExtension> {
        enableLazyInitialization = true
        enableDirtyTracking = true
        enableAssociationManagement = true
        enableExtendedEnhancement = false
    })
}

这在Java代码上应该运行良好,但在增量构建的Kotlin上不一定有效。您还必须拥有Java源设置以触发仪器。


对我来说,它并没有以任何方式改变编译后的类...(5.6.0-Final) - spyro

2

从Hibernate 6.x开始,gradle配置如下:

plugins {
    id 'org.hibernate.orm' version '6.1.7.Final'
}

hibernate {
    enhancement {
        lazyInitialization true
        dirtyTracking true
        associationManagement true
        extendedEnhancement true
    }
}

settings.gradle文件不需要使用hibernate-gradle-plugin解析策略。

从版本6.2开始,默认情况下enableLazyInitializationenabledDirtyTracking将为true,并同时作为已弃用的进行文档记录 this migration guide


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接