【发布时间】:2020-12-22 23:41:17
【问题描述】:
我正在使用 Gradle 4.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")。两者都是 lombok 注释。
更新 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 注释。我想知道这是否会导致问题。
【问题讨论】:
-
如果您使用基于 Eclipse/Eclipse 的 IDE,请尝试此操作 - journaldev.com/18124/java-project-lombok
-
我正在使用 Eclipse 和 BuildShip。使用 IDE 和 Boot Dashboard 可以正常编译。仅在使用 BuildShip 发出
bootJar时才会失败 -
我刚刚在命令行中尝试使用
gradle bootJar和同样的问题。 -
使用的是哪个版本的龙目岛?使用最新版本 1.18 它应该可以工作。否则还有更多推荐here。
-
@flaxel - Lombok v1.18.12。感谢您的链接。现在看看。
标签: spring-boot gradle lombok