lombok으로 인한 Gradle 빌드 실패
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으로부터 @Builder(builderMethodName = "hiddenBuild")CarDto에 주석. 둘 다 롬복 주석입니다.
업데이트 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 8 대신 JDK 11을 사용해 보았습니다. 같은 결과입니다.
업데이트 4
내가 사용하고 @Builder롬복 주석을. 그것이 문제를 일으키는 지 궁금합니다.
답변
lombok-pluginbuild.gradle 파일에 구성 이 표시되지 않습니다 .
내 프로젝트에서 gradle 4.10.3을 위해 lombok을 설정해야했는데 이것이 내가 한 일입니다.
group 'io.metadata'
version '1.11-SNAPSHOT'
apply plugin: 'java'
project.ext.set("spring.boot.version", "2.2.6.RELEASE")
project.ext.set("spring.core.version", "5.2.5.RELEASE")
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("io.freefair.gradle:lombok-plugin:5.0.0-rc4")
}
}
subprojects {
repositories {
mavenLocal()
mavenCentral()
}
apply plugin: 'java'
apply plugin: 'io.freefair.lombok'
}
에서 apply plugin: 'io.freefair.lombok'정의 된 종속성을 확인하십시오 buildscript.
다중 모듈 프로젝트를 사용하고 있지만 어느 쪽이든 lombok 플러그인을 사용할 수 있습니다 apply.
lombok-plugin을 반드시 사용해야하는 것은 아니지만 매우 잘 작동하고 사용하기 쉽습니다. 여기에서 문서를 따를 수 있습니다.https://plugins.gradle.org/plugin/io.freefair.lombok
lombok에서 생성 한 코드와 관련된 정적 가져 오기에 대한 모든 참조를 제거합니다. 제 경우에는 :
import static com.example.car.dto.CarDto.CarDtoBuilder;
CarDtoBuilder수업에서 lombok @Builder을 통해 생성되었습니다 CarDto. 해결되면 log기호를 찾을 수 없음 (에서 생성됨 @Slf4j) 과 같은 다른 lobmok 컴파일 관련 문제 가 사라집니다.