2017-02-02 1 views
0

스프링 데이터 JPA와 하이버 네이트 (5.0.11. 최종) (내가 잘못하지 않은 경우 최종)가있는 스프링 부트 (v1.4.2) 응용 프로그램이 있습니다. 나는 jpadmodelgen-plugin을 추가하여 나를 위해 메타 모델 클래스를 생성했다. 왜냐하면, 나는 게으르다. 불행히도, 내가 gradle build을 실행할 때 나는 약간의 불쾌한 오류가 발생한다. 이에 대한 궁금한 점은 gradle test (전체 응용 프로그램의 실제 단위 및 통합 테스트 수행)이 오류없이 실행된다는 것입니다. 나는 IntelliJ에서 앱을 실행할 수 있으며 인생은 위대하다. 제 집사 젠킨스가 그것을 만들 수 없다는 것입니다.Gradle compileJpaModelgenJava 실패했습니다.

> 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. 

오류는 내 자신의 클래스뿐만 아니라 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"] 

어벤저 스 조립! 도와 줘, 제발.

답변

3

나는 플러그인을 유지하는이 문제에 대한 해결책을 알고있는 누군가가 있기를 바랐다. 그러나 명백한 것처럼. 플러그인을 사용하지 않고 다른 방법을 찾았습니다.

내 솔루션은 this answer을 기반으로합니다.

  • 플러그인이 제거되었습니다.
  • Hibernate의 jpamodelgen에 대한 의존성 컴파일.
  • 변수를 정의한 generatedSourcesDir ...
  • ... 주 Java 소스 세트에 추가되었습니다.
  • 사용자 정의 삭제 작업 removeGeneratedMetamodel이 필요합니다. 그렇지 않으면 홀수 컴파일러 오류 like this one이 발생합니다.
  • 메타 모델을 생성하는 일부 옵션을 compileJava에 추가했습니다.
  • removeGeneratedMetamodel에서 compileJavaclean 개의 작업에 종속성이 추가되었습니다.

다음은 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) 
0

나는 동일한 오류가있었습니다.

은 내가

compile group: 'javax.persistence', name: 'persistence-api', version: '1.0.2' 

의존성을 추가하고, 그 문제를 해결. 이 해결책을 찾았습니다 here.

관련 문제