Springboot2, Lombok, Gradle 환경에서 'compileJava' 에러 해결법
Springboot2, Lombok, Gradle을 이용한 개발 환경에서 소스 코드를 다른 컴퓨터로 가져와 실행하다가 'execution failed for task compileJava'라는 에러가 발생했습니다. 또는 'gradle bootJar'로 패키징 시에 'gradle can't not find symbol' 오류가 발생하는 경우입니다.
이런 상황은 매우 당혹스럽습니다. 아무 것도 건드리지 않고 잘 동작하던 소스를 git pull로 가져오기만 했을 뿐인데, path 오류도 아니고 컴파일 에러가 발생하니 이유를 알 수 없었습니다. IDE에서 오류를 표시하지 않았던 것이 더욱 혼란을 가중시켰습니다.
'compileJava' 에러의 원인과 해결 방법
여러 시도 끝에 문제의 원인과 해결 방법을 찾았습니다. 제 Gradle dependency 설정에서는 compileOnly('org.projectlombok:lombok')만 설정되어 있었습니다. 그런데 문제 해결을 위해서는 annotationProcessor('org.projectlombok:lombok')도 함께 설정해주어야 했습니다.
(왜 이전에는 문제 없이 동작했는지 정확한 원인은 아직 알 수 없습니다. 정보 제공해주실 분은 연락 부탁드립니다.)
저 같은 경우에는 dependency를 최대한 깔끔하게 관리하려고 항상 삭제 후 문제 여부를 체크하는 습관이 있었습니다. 처음에 lombok 설정에서 두 가지 옵션을 모두 적용 후 하나를 지웠고, 그 때문에 문제가 없어보였지만 실제로는 그 부분에서 어느 정도 문제가 있었던 것으로 예측됩니다.