기술없는 기술 블로그 RSS 태그 관리 글쓰기 방명록
2021-12-31 21:03:40

스프링 이니셜라이저를 통해 생성한 코드, 책에서 설명한 코드를 비교해가며

직접 생성한 Gradle Project에 JUnit5, Gradle 7.0, SpringBoot 2.6.2를 설치해서 실습을 진행했다.

 

스프링 이니셜라이저를 통해 생성된 Gradle의 롬복 관련 코드는 아래와 같다.

 

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
	// ...
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    // ...
}

 

스프링 이니셜라이저에서 제공하는 의존성 설치가 안정적이긴 하지만 굳이 configurations가 필요한가 싶어 지워보았을 때 문제없이 작동 하였다. 이 부분은 아직 명확하게 찾아낸 내용이 없어 조금 더 찾아 보는 중이지만 롬복 프로젝트에서 제공한 방식과 큰 차이가 없는 것을 찾아냈다.

 

아래 코드에 적힌 롬복 프로젝트에서 추천하는 방식은  plugins를 사용한 방식으로 스프링 이니셜라이저의 방식과 조금 다르지만 내가 잘 못 설정한 탓인지 plugins 방식을 사용 했을 때 lombok을 사용하지 못했다.

 

plugins {
  id "io.freefair.lombok" version "6.3.0"
}

 

buildscript를 이용한 apply plugin 방식

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "io.freefair.gradle:lombok-plugin:6.3.0"
  }
}

apply plugin: "io.freefair.lombok"

 

만약 플러그인 방식을 사용하지 않고 mavenCentral에서 의존관계를 설치하고 싶다면 아래의 코드를 사용할 수 있다고 적혀있다.

 

repositories {
	mavenCentral()
}

dependencies {
	compileOnly 'org.projectlombok:lombok:1.18.22'
	annotationProcessor 'org.projectlombok:lombok:1.18.22'
	
	testCompileOnly 'org.projectlombok:lombok:1.18.22'
	testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
}

 

 

추가로 compileOnly 에서 implementation으로 바꿔도 문제는 없으나 lombok의 Getter, Setter는 컴파일 타임에 사용하고 런타임에는 사용하지 않기 때문에 compileOnly를 추천하는 듯 하다.

 

추가적으로 공부해야할 내용은 아래 세 가지가 생겼다.

 

1. plugins 방식의 lombok을 사용해서 빌드 했을 때 실패한 원인, 해결책

2. implementation, compileOnly, runtimeOnly, api 차이

3. configurations - CompileOnly - extendsForm 문법의 의미

 

 

 

 

 

 

https://kkambi.tistory.com/155

https://projectlombok.org/setup/gradle

https://bepoz-study-diary.tistory.com/372#recentComments