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)
复仇者组装!我需要帮助.
我曾经希望那里的某个人能够知道解决这个问题的方法来保留插件,但很明显,没有.我发现了一种不依赖插件的不同方式,我自己做了一些工作.
我的解决方案基于这个答案.
generatedSourcesDir......removeGeneratedMetamodel必需的自定义删除任务,否则会出现像这样的奇怪的编译器错误.compileJava生成元模型的选项.removeGeneratedMetamodel对compileJava和clean任务的依赖.这是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)
| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |