[Gradle] Gradle 버전에 따른 Lombok 설정 방법

[Gradle] Gradle 버전에 따른 Lombok 설정 방법

“Gradle 버전에 따른 Lombok 설정 방법”

#목차

문제

문제 상황 재현 코드

테스트 코드

// file: "HelloResponseDTOTest.java"
public class HelloResponseDTOTest {
    @Test
    public void 롬복_기능_테스트() {
        // given
        String name = "test";
        int amount = 1000;

        // when
        HelloResponseDTO dto = new HelloResponseDTO(name, amount);

        // then
        assertThat(dto.getName()).isEqualTo(name);
        assertThat(dto.getAmount()).isEqualTo(amount);
    }
}
  • 코드에 이상은 없었다.
  • 문제는 gradle의 버전에 따라 lombok 설정이 다른 것이었다.

문제의 build.gradle 설정

// file: "build.gradle"
dependencies {
   // Gradle 5.x 미만
   implementation 'org.projectlombok:lombok'
}
  • 위 코드처럼 내가 설정을 해놓았다.
  • 문제는 프로젝트의 Gradle 버전과 lombok 버전이 맞지 않아 생기는 오류라는 것을 확인하였다.
  • 나의 gradle 버전을 확인하지 않고 설정 해버렸던 것이었다.

나의 gradle 버전 확인

./gradlew --version
  • 나의 Gradle Version7.6.1
  • 내가 build.gradle 설정에서 설정해 준 버전은 Gradle 5.x 미만의 설정이어서 variable '변수명' not initialized in the default constructor라는 오류가 발생했던 것이었다.

해결

해결 build.gradle 재설정

// file: "build.gradle"
dependencies {
   // Gradle 5.x 이상
   compileOnly 'org.projectlombok:lombok'
   annotationProcessor 'org.projectlombok:lombok'
}
  • 5.x대의 설정 방법으로 설정해주니 해결 되었다.

결론

  • 테스트 작업 시 variable '변수명' not initialized in the default constructor라는 해당 오류 발생 시 해당 프로젝트의 Gradle 버전 확인
  • Gradle 버전(5.x 미만, 5.x 이상)에 따라 lombok 설정 후 테스트 재진행

Reference