如何设置Hibernate Gradle插件以增强字节码?

时间:2016-02-22 11:11:02

标签: hibernate gradle

Hibernate Gradle插件相当于hibernate-enhance-maven-plugin,并提供构建时代码增强功能。 official docs未提及apply plugin: 'something'行。如果我按照指南说的那样做,我得到:

  

无法为参数找到方法hibernate()...

我尝试使用apply plugin: 'enhance'猜测插件名称(如this thread建议的那样)和apply plugin: 'org.hibernate.orm'(如this test建议的那样),但它只是说带有该ID的插件未知

有没有人设法成功设置此插件?

我的build.gradle如下:

allprojects {
    group 'xxx'
    version '1.0-SNAPSHOT'
}

subprojects {
    apply plugin: 'java'

    sourceCompatibility = 1.8

    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        ...
    }
}

project(':xxx-model') {
    buildscript {
       repositories {
           mavenLocal()
           mavenCentral()
       }
       dependencies {
           classpath "org.hibernate:hibernate-gradle-plugin:5.0.7.Final"
       }
    }

    apply plugin: 'org.hibernate.orm'

    hibernate {
        enhance {}
    }
}

... more unrelated project blocks here

buildscript{...}移动到根allprojectssubprojects进行实验,但没有任何有用的结果。

3 个答案:

答案 0 :(得分:11)

完整的示例如下所示:

apply plugin: 'java'

repositories {
    mavenLocal()
    mavenCentral()
}

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "org.hibernate:hibernate-gradle-plugin:5.1.0.Final"
    }
}

apply plugin: 'org.hibernate.orm'

hibernate {
    enhance {
        enableLazyInitialization= true
        enableDirtyTracking = true
        enableAssociationManagement = true
    }
}

dependencies {
    compile 'org.hibernate:hibernate-core:5.1.0.Final'
}

答案 1 :(得分:4)

apply plugin: 'org.hibernate.orm'

插件代码表明您从测试中得到的内容是正确的。您可能缺少的是repositories部分中的buildScript部分,用于从中获取插件jar。

答案 2 :(得分:4)

字节码增强的官方文档(从5.1开始)实际上是User Guide。该文档仍未提及应用此插件,因为我们假设使用Gradle有一些基本的Gradle知识;)但是,用户指南部分可能更好地指定如何应用插件(我在Jira中创建了an issue为了那个原因)。

与此同时,该插件的ID名称为org.hibernate.orm,因此您需要添加:

apply: 'org.hibernate.orm'