lombok 실행 오류

0

트러블슈팅

목록 보기
7/9

Auth 서비스에서 DeliveryAgent 서비스를 분리하기 위해 서비스를 새로 생성 후 실행 테스트를 해봤다.

근데 빌드를 실패했다는 에러메시지와 함께 빌더와 getter 심볼을 사용할 수 없다고 떴다...

분명 build.gradle에 lombok 의존성도 추가하고, Getter와 builder 어노테이션도 제대로 적용해놓은 것은 다시 확인해서 문제가 없었다.


확인을 해보니 나는 lombok 의존성 추가를 할 때
인텔리제이의 기능으로 lombok을 추가했었는데

그렇게 하면

dependencies {

	implementation 'org.projectlombok:lombok'

}

이와같이 implementation만 추가가된 상태였다.

하지만 다른 서비스들의 build.gradle 파일을 확인해보니

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

// ...

dependencies {

	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'

}

이런식으로 lombok의 의존성이 두개로 나눠져있었는데 찾아보니

implementation : 컴파일 타임과 런타임 모두에 대한 종속성으로 Lombok을 추가한다.
compileOnly : 컴파일 타임에만 사용할 수 있는 종속성으로 Lombok을 추가한다.
annotationProcessor : 컴파일 중에 주석을 처리하고 생성된 코드는 컴파일된 클래스에 포함한다.

implementation으로 의존성을 추가하게되면 lombok의 역할이 컴파일 시점에 한정되어 컴파일 시에만 필요하기 때문이다.
그렇기 때문에 런타임에도 lombok이 사용되어 불필요한 충돌을 일으켜 발생한 오류였던것이다.

0개의 댓글