Gradle compileJpaModelgenJava FAILED

Rob*_*ohr 2 hibernate gradle spring-data-jpa

我有一个Spring Boot(v1.4.2)应用程序与Spring Data JPA和Hibernate(5.0.11.Final,如果我没有记错的话).我添加了jpadmodelgen-plugin为我生成元模型类,因为,你知道,我很懒.不幸的是,当我跑步时,gradle build我得到一些令人讨厌的错误.奇怪的是,做gradle test(完成应用程序的实际单元和集成测试)运行没有错误.我甚至可以在IntelliJ中运行应用程序,生活很棒.只是我的管家Jenkins无法建造它.

> gradle build
:initJpaModelgenSourcesDir
:compileJpaModelgen UP-TO-DATE
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:jar
:bootRepackage
:assemble
:compileJpaModelgenJava

Mapping_.java:3: error: cannot find symbol
import com.<snip>.model.domain.auth.Member;
                                   ^
  symbol:   class Member
  location: package com.<snip>.model.domain.auth
Mapping_.java:7: error: package javax.persistence.metamodel does not exist
import javax.persistence.metamodel.SingularAttribute;
                                  ^
Mapping_.java:8: error: package javax.persistence.metamodel does not exist
import javax.persistence.metamodel.StaticMetamodel;
                                  ^

100 errors
:compileJpaModelgenJava FAILED

FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)

错误表明不仅找不到我自己的类,还有javax.persistence.这是build.gradle文件.

buildscript {
    ext {
        springBootVersion = '1.4.2.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath('gradle.plugin.at.comm_unity.gradle.plugins:jpamodelgen-plugin:1.1.2')
    }
}

plugins {
    id "at.comm_unity.gradle.plugins.jpamodelgen" version "1.1.2"
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'findbugs'
apply plugin: 'jacoco'

jar {
    baseName = 'services'
    version = '1.0.0'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

jpaModelgen {
    library = "org.hibernate:hibernate-jpamodelgen:5.0.11.Final"
    jpaModelgenSourcesDir = "src/generated/java"
}

findbugs {
    ignoreFailures = true
    reportLevel = 'low'
}

javadoc {
    failOnError = false
}

dependencies {
    // Spring Boot, some Apache Commons libs and JDBC Drivers.
}

sourceSets {
    unitTest {
        resources {
            srcDir "resources"
        }
    }
    /*generated {
        java.srcDir "${buildDir}/src/generated/java"
    }*/
}

compileJava.options.compilerArgs += ["-proc:none"]
Run Code Online (Sandbox Code Playgroud)

复仇者组装!我需要帮助.

Rob*_*ohr 5

我曾经希望那里的某个人能够知道解决这个问题的方法来保留插件,但很明显,没有.我发现了一种不依赖插件的不同方式,我自己做了一些工作.

我的解决方案基于这个答案.

  • 该插件已被删除.
  • 编译对Hibernate的jpamodelgen的依赖.
  • 定义变量generatedSourcesDir......
  • ...添加到主java源代码集中.
  • 创建了一个removeGeneratedMetamodel必需的自定义删除任务,否则会出现像这样的奇怪的编译器错误.
  • 添加了一些compileJava生成元模型的选项.
  • 添加了removeGeneratedMetamodelcompileJavaclean任务的依赖.

这是build.gradle.

buildscript {
    ext {
        springBootVersion = '1.4.2.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'findbugs'
apply plugin: 'jacoco'

jar {
    baseName = 'services'
    version = '1.0.0'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

findbugs {
    ignoreFailures = true
    reportLevel = 'low'
}

javadoc {
    failOnError = false
}

dependencies {
    // Spring Boot, some Apache Commons libs and JDBC Drivers.

    compile group: 'org.hibernate', name: 'hibernate-jpamodelgen', version: '5.0.11.Final'
}

ext {
    generatedSourcesDir = file("src/main/java/generated")
}

sourceSets {
    unitTest {
        resources {
            srcDir "resources"
        }
    }
    main {
        java {
            srcDir 'src/main/java'
            srcDir generatedSourcesDir
        }
    }
}

task removeGeneratedMetamodel(type: Delete) {
    generatedSourcesDir.deleteDir()
}

compileJava {
    doFirst {
        generatedSourcesDir.mkdirs()
    }
    dependsOn(removeGeneratedMetamodel)
    options.compilerArgs += ['-s', generatedSourcesDir]
}

clean.dependsOn(removeGeneratedMetamodel)
Run Code Online (Sandbox Code Playgroud)