如何使用 Gradle 5.x 生成 JPA 元模型

How to generate JPA Metamodel with Gradle 5.x

我目前正在尝试从 gradle 4.8.1 升级到 5.1.1,但未能为我们的代码生成休眠元模型。

问题是 gradle 5 忽略了通过编译类路径传递的注释处理器,但我发现的所有插件都在使用它(即 "-proc:only")。

我试图明确指定注释处理器,如 gradle (https://docs.gradle.org/4.6/release-notes.html#convenient-declaration-of-annotation-processor-dependencies) 所指出的 annotationProcessor 'org.hibernate:hibernate-jpamodelgen'

但这没有帮助,我仍然收到以下错误:

warning: Annotation processing without compilation requested but no processors were found.

也许插件也需要更新,但正如我所说,我发现的所有插件都通过类路径传递注释处理器。我们目前正在使用这个:https://github.com/Catalysts/cat-gradle-plugins/tree/master/cat-gradle-hibernate-plugin

您可以删除 jpa modelgen 的插件并使用

annotationProcessor('org.hibernate:hibernate-jpamodelgen:<version>')

此外,我使用这些设置来配置生成的代码应该存放的位置。

tasks.withType(JavaCompile) {
  options.annotationProcessorGeneratedSourcesDirectory = file("src/generated/java")
}


sourceSets {
    generated {
        java {
            srcDirs = ['src/generated/java']
        }
    }
}