【问题标题】:Unable to generate JPA metamodel casses with gradle and sts无法使用 gradle 和 sts 生成 JPA 元模型案例
【发布时间】:2019-10-01 08:29:30
【问题描述】:

关于如何设置项目有很多不同的信息,因此生成 JPA 元模型适用于构建,但这些都不适合我。我正在使用 Java 11、gradle 5.4.1 和 STS(尝试了 STS 3.9.8 和 4.2.1)。 我的注释 gradle 设置如下所示:

annotationProcessor(
            "javax.xml.bind:jaxb-api",
            "org.projectlombok:lombok",
            "org.hibernate:hibernate-jpamodelgen",
)
compileJava {
    def relativePath = "out/production/classes/generated"
    sourceSets.main.java {
        srcDir(relativePath)
    }
    def generatedSourceDir = project.file(relativePath)
    options.annotationProcessorGeneratedSourcesDirectory = generatedSourceDir
}

我也完成了右键单击项目>属性> Java编译器>注释处理并选择:

  • 启用项目特定设置
  • 启用注释处理
  • 在编辑器中启用处理
  • 生成的源导向器设置为out/production/classes/generated

在 > 我选择的工厂路径:

  • 启用项目特定设置
  • 添加了外部 JAR hibernate-jpamodelgen-5.3.7.Final.jar
  • 添加了外部 JAR javax.persistence-api-2.2.jar

任何人都可以看到我错过或做错了吗?谢谢。

【问题讨论】:

  • 是 Eclipse 特有的问题吗? (如果您手动运行 gradle 会生成文件吗?)我尝试了您的设置,它对我来说非常适合(命令行和 IntelliJ)。有 2 个警告:annotationProcessors 出现在依赖部分中,这在您的代码中并不明显。最重要的是,由于 Gradle 5.2(和 Intellij 2019.1)最近的改进,compileJava 现在是多余的)
  • @Lesiak 是的,如果我手动运行 gradle,则会生成文件。我想这意味着它是 Eclipse 特有的问题。如果有人知道应该如何配置 STS 以便生成元模型,那就太好了。

标签: spring-boot gradle spring-tool-suite java-11 jpa-2.2


【解决方案1】:

我使用net.ltgt.apt-eclipse 插件让它运行。 我关注了博文:http://dplatz.de/blog/2018/gradle-apt.html

我正在使用 Eclipse 2019-03 和 Gradle 5.4.1

由于那里的博客描述了另一个注释处理器,我将在这里描述采取的步骤

  1. 导入net.ltgt.apt-eclipse插件。 build.gradle 如下所示:
plugins {
    id 'org.springframework.boot' version '2.1.4.RELEASE'
    id 'java'
    id "net.ltgt.apt-eclipse" version "0.18"    
}

apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    compileOnly 'org.projectlombok:lombok:1.16.18'
    runtimeOnly 'com.h2database:h2'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    annotationProcessor(
            "javax.xml.bind:jaxb-api",
            "org.projectlombok:lombok",
            "org.hibernate:hibernate-jpamodelgen"
    )

}
  1. 从命令行执行了以下命令:
gradle eclipseJdtApt eclipseFactorypath eclipseJdt
  1. 重新导入 gradle 项目。清洁的项目。 右键单击项目并选择Gradle / Refresh Gradle Project。之后Project / Clean

  2. 检查Properties / Java Compiler / Annotation Processing / Factory Path 中是否存在 JPA 注释处理器注意:我有以下条目,按顺序:

    • jaxb-api-2.3.1.jar
    • lombok-1.18.6.jar
    • hibernate-jpamodelgen-5.3.9.Final.jar
    • javax.activation-api-1.2.0.jar -jboss-logging-3.3.2.Final.jar
  3. 运行构建

请注意,我删除了生成文件的自定义目录,它们现在生成到 .apt_generated,但我对此很满意。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2011-03-03
    相关资源
    最近更新 更多