Lombok 적용과 빌드 환경 설정하기

kukjunLEE·2022년 6월 18일
0

Trouble Shooting

목록 보기
1/5

이 내용은 다음과 같은 사람들에게 특히 유용합니다.

  • Lombok에 대해 알고 싶은 사람
  • Lombok 적용, 빌드 시 과정이 궁금한 사람
  • 개발 단계에서는 Lombok 잘 적용되었으나, 실제 배포 후 Lombok 적용이 안되는 사람

이 내용을 보기 위해 기본적으로 알아야 할 지식은 다음과 같습니다.

  • gradle 환경의 빌드 경험
  • IntelliJ를 사용하는 개발 경험
  • build.gradle 파일 작성과 구성


개요

💡 롬복 라이브러리는 자바로 만드는 프로젝트에 있어서 매우 유용한 기능들을 제공합니다.
  • @Getter
  • @Setter
  • @...Constructor
  • log 생성 기능

그 외 많은 기능을 지원하지만, 해당 내용을 다루는 블로그 글이 있으므로 해당 블로그 링크를 걸어두고 자세한 내용은 생략하겠습니다.


적용 단계

롬복 라이브러리는 APT(Annotation Processing Tool)를 통해 어노테이션 프로세스(Annotation Processor)로 컴파일 단계에서 수행하게 됩니다.


그러므로 컴파일 단계 이전에 어노테이션 프로세스를 명시해주어야 합니다.


어노테이션 프로세스를 명시하는 방법에는 크게 두 가지 방법이 있습니다.
1. IDE(IntelliJ) Build Tools 설정
2. build.gradle 내부 설정




lombok 적용 방법


롬복 라이브러리를 사용하기 위해서는 프로젝트에서 롬복 어노테이션 프로세서를 동작시키기 위한 설정을 해야 합니다.

IDE(IntelliJ) Build Tools 설정

💡 IntelliJ 빌드인 경우, 간단한 설정만으로 lombok을 사용할 수 있습니다.
  • 단, IntelliJ 빌드가 아닌 경우 동작하지 않습니다.

  1. IDE 빌드 환경 확인
    IDE 빌드 환경 확인


  2. IntelliJ Annotation Processing 기능 적용
    IntelliJ Annotation Processing 기능 적용


  3. Lombok Plugin 설치
    Lombok Plugin 설치



위와 같은 방법은 기본적인 Build 방식을 변경하는 것을 통해 IntelliJ 가 제공하는 빌드와, Lombok 플러그인을 통해서 자동으로 Annotation Processor 를 찾아주는 방식입니다.

프로젝트 내부 설정 없이 IntelliJ 가 Lombok Annotation Processor를 자동으로 등록해주므로 개발환경에서는 사용할 수 있습니다.



하지만 배포 환경에서는 어떨까요?

배포 환경에서는 Gradle 기반의 빌드와 실행, 테스트를 진행하게 됩니다.
때문에 Lombok Annotation Processor 를 gradle에게 미리 알려주어야 합니다.

만약 Gradle 기반으로 빌드, 테스트를 진행하게 되면 해당 어노테이션이 적용되지 않는 문제가 발생합니다.

  • gradle 기반 빌드시 어노테이션을 읽지 못하는 문제 발생
    gradle 기반 빌드시 어노테이션을 읽지 못하는 문제 발생


build.gradle 내부 설정

💡 배포 환경이 Gradle이라면, 위와 같이 Annotation Processor를 자동으로 찾아주는 방법을 사용하기는 힘듭니다. 이런 경우 build.gradle 내부에 annotationProcessor 경로를 지정해주면 됩니다.
  • 배포 환경의 build.gradle
    배포 환경의 build.gradle

해당 방법을 사용하면, IntelliJ 빌드, Gradle 빌드에 관계없이, 어느 환경에서나 어노테이션 프로세서가 적용됩니다.

  • gradle 기반 빌드 시에도 어노테이션을 정상적으로 읽어옴
    gradle 기반 빌드 시에도 어노테이션을 정상적으로 읽어옴


관련한 내용중에서 잘못된 내용이나, 이해하기 어려운 내용이 있다면 덧글이나 메일주시면 최대한 빠르게 답변 드리도록 하겠습니다.

감사합니다! ☺️

profile
Software Engineer

0개의 댓글