gpt4 book ai didi

hibernate - Gradle compileJpaModelgenJava 失败

转载 作者:行者123 更新时间:2023-12-03 08:12:48 27 4
gpt4 key购买 nike

我有一个带有 Spring Data JPA 和 Hibernate(如果我没记错的话是 5.0.11.Final)的 Spring Boot (v1.4.2) 应用程序。我添加了 jpadmodelgen-plugin 来为我生成元模型类,因为,你知道,我很懒。不幸的是,当我运行 gradle build 时,我遇到了一些严重的错误。奇怪的是,执行 gradle test(对整个应用程序进行真正的单元和集成测试)运行时没有错误。我什至可以在 IntelliJ 中运行该应用程序,生活很美好。只是我的管家 Jenkins 无法 build 它。

> 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"]

复仇者集结!我需要帮助。

最佳答案

我曾希望有人知道保留插件的这个问题的解决方案,但显然没有。我找到了一种不依赖插件的不同方式,自己做了更多的工作。

我的解决方案基于 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)

关于hibernate - Gradle compileJpaModelgenJava 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41998178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com