Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 由于lombok,Gradle构建失败_Spring Boot_Gradle_Lombok - Fatal编程技术网

Spring boot 由于lombok,Gradle构建失败

Spring boot 由于lombok,Gradle构建失败,spring-boot,gradle,lombok,Spring Boot,Gradle,Lombok,我使用的是Gradle4.10.2(但如果使用最新版本就可以了)。这是我的gradle文件: plugins { id 'org.springframework.boot' version '2.2.5.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sour

我使用的是Gradle4.10.2(但如果使用最新版本就可以了)。这是我的gradle文件:

plugins {
    id 'org.springframework.boot' version '2.2.5.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}

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

repositories {
    jcenter()
}

ext {
    set('springCloudVersion', "Hoxton.SR3")
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
    implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    runtime 'org.springframework.boot:spring-boot-devtools'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}
当我执行
bootJar
时,它会失败并出现很多错误。这些错误都是由于没有找到lombok自动生成的getter、setter等。如何解决这些错误?我看过其他关于这个问题的帖子,他们都建议添加lombok依赖项作为
annotationProcessor
&
compileOnly
,但我已经这样做了,仍然存在这个问题

更新

以下是我得到的几个错误:

C:\Users\user\eclipse-workspace\example\src\main\java\com\example\proj\service\CarService.java:60: error: cannot find symbol
            log.debug("calling for cars {} ", cars);
            ^
  symbol:   variable log
  location: class CarService
C:\Users\user\eclipse-workspace\example\src\main\java\com\example\proj\service\CarService.java:66: error: cannot find symbol
                CarDtoBuilder dtoBuilder = dtoBuilderByCar.getOrDefault(
                ^
  symbol:   class CarDtoBuilder
  location: class CarService
日志应来自注释
@Slf4j
。而
CarDtoBuilder
来自于在CarDto上注释的
@Builder(builderMethodName=“hiddenBuild”)
。两者都是龙目山注释

更新2

现在尝试Gradle 4.10.3。同样的结果。下面是来自
gradle-v
的输出:

------------------------------------------------------------
Gradle 4.10.3
------------------------------------------------------------

Build time:   2018-12-05 00:50:54 UTC
Revision:     e76905e3a1034e6f724566aeb985621347ff43bc

Kotlin DSL:   1.0-rc-6
Kotlin:       1.2.61
Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_222 ( 25.222-b10)
OS:           Windows 10 10.0 amd64
更新3

我用Gradle 6试过了,结果也一样。我试过使用Windows和Mac。。。同样的结果。我尝试过使用JDK 11而不是JDK 8。。。同样的结果

更新4


我正在使用
@Builder
lombok注释。我不知道这是否导致了问题。

我在build.gradle文件中没有看到您的
lombok插件
配置

我不得不在gradle 4.10.3的项目中设置lombok,我就是这么做的:

组“io.metadata”
版本“1.11-SNAPSHOT”
应用插件:“java”
project.ext.set(“spring.boot.version”、“2.2.6.RELEASE”)
project.ext.set(“spring.core.version”、“5.2.5.RELEASE”)
构建脚本{
存储库{
马文{
url“https://plugins.gradle.org/m2/"
}
}
依赖关系{
类路径(“io.freefair.gradle:lombok插件:5.0.0-rc4”)
}
}
子项目{
存储库{
mavenLocal()
mavenCentral()
}
应用插件:“java”
应用插件:“io.freefair.lombok”
}
检查
apply插件:“io.freefair.lombok”
以及在
buildscript
上为其定义的依赖项

请注意,我使用的是多模块项目,但无论哪种方式,您都可以使用lombok插件并应用它

它不是强制性使用lombok插件,但它工作得很好,而且很容易做到。您可以按照以下文档操作:
删除对涉及lombok生成的代码的静态导入的任何引用。就我而言,我有:

import static com.example.car.dto.CarDto.CarDtoBuilder;

CarDtoBuilder
是通过
CarDto
类上的lombok
@Builder
生成的。解决后,其他与lobmok编译相关的问题,如未找到符号(由
@Slf4j
创建)将消失。

如果您使用的是基于Eclipse/Eclipse的IDE,请尝试此方法-我使用的是Eclipse和BuildShip。使用IDE和引导仪表板,一切都可以很好地编译。只有当使用buildship发出
bootJar
时,它才会失败。我刚刚在命令行中使用
gradle bootJar
尝试了同样的问题。使用的是哪一个版本的Lombok?对于最新版本1.18,它应该可以工作。否则会有更多的建议。@flaxel-LombokV1.18.12。谢谢你的链接。现在看一看。我在尝试使用该插件时出错:
应用插件请求[id:'io.freefair.lombok',版本:'5.1.1']时发生异常,未能应用插件[class'io.freefair.gradle.plugins.lombok.LombokBasePlugin']无法为class io.freefair.gradle.plugins.LombokExtension]生成代理类。org/gradle/api/provider/MapProperty
@user8297969尝试使用较低版本(我在答案中发布的版本),您使用的是最新的插件版本,但您的gradle是4.10.3我会尝试,但我不确定为什么我的其他项目没有插件。我也不介意使用gradle 6或其他更新的版本。你的帖子说它使用了4.10.3。你想让我试试哪个版本?@user8297969好吧。。。使用最新版本总是很好的。请记住,如果您使用gradle 4.10.3,您将需要与该版本兼容的lombok插件。在我的回答中,我发布了带有兼容插件的gradle
4.10.3
。你可以使用我的这个配置,因为我知道它可以工作(我正在使用它),一旦你让它工作,你可以升级gradle/插件到最新版本。我尝试过使用最新的gradle版本,它允许使用
插件{id“iofreefir.lombok”version“5.1.1”}
。但我得到同样的编译错误。我正在使用
插件
,因此不确定如何使用
应用插件
。这给了我一个错误。