[Android Studio] Lombok 사용하기

Lombok

Lombok은 간단하게 BEAN(POJO)를 작성할 수 있도록 도와주는 라이브러리입니다.

Annotation을 이용해 데이터 클래스를 작성하며 발생하는 보일러플레이트를 줄여줍니다.


요즘의 IDE에선 자동으로 Constructor, Getter, Setter 등을 작성해주는 Generator가 존재하지만, Lombok을 이용하면 더 깔끔하고 편하게 표현이 가능합니다.


다음은 제가 주로 사용하는 Feature들입니다.


@Getter / @Setter

Getter, Setter 메소드를 생성합니다.

단순히 Getter, Setter를 만드는 게 아니라 접근제어자 등 추가 설정이 가능합니다.


@NoArgsConstructor, @RequireArgsConstructor and @AllArgsConstructor

생성자를 생성합니다. 각 Annotation에 따라 멤버 필드의 취사 선택이 가능합니다.


@EqualsAndHashCode

equals()와 hashCode() 메소드를 생성합니다. 필드 지정이 가능합니다.


@Data

위에 언급한 Annotation 외에 일반적인 데이터 클레스에 적용되는 부분을 한번에 적용해주는 Annotation입니다.


이곳에서 Lombok의 Annotation 목록과 Java 코드와의 비교 예제를 확인하실 수 있습니다.



Android Studio 설정

다른 라이브러리들과 비슷하게 gradle 설정을 통해 간단하게 라이브러리 사용이 가능합니다.

자세한 설정 방법은 이곳에서 확인하실 수 있습니다.


모듈 레벨의 build.gradle의 의존성에 다음 라인을 추가합니다:


compileOnly "org.projectlombok:lombok:1.16.18"

annotationProcessor "org.projectlombok:lombok:1.16.18"


추가적으로 Lombok InteliJ 플러그인이 필요합니다.


우선 플러그인 설정 창으로 이동합니다.

OS X 기준 Android Studio > Preferences > Browse repositories...를 선택해주세요.

(Windows는 lombok 홈페이지의 설정 방법을 참고하시기 바랍니다.)

이후 lombok을 검색해 인스톨 후 재시작해줍니다.

플러그인 설치까지 완료하셨다면 다음과 같이 Lombok의 Annotation들을 사용하실 수 있습니다. Structure에 생성자와 Getter등 각 메소드가 생성된 것을 확인할 수 있습니다.




문제 해결

Annotation Processing 활성화 문제

플러그인 설치 후 재시작 시 아래의 에러가 발생할 수 있습니다.


Lombok Requires Annotation Processing


Annotation processing seems to be disabled for the project "<project name>".

For the plugin to function correctly, please enable it under

"Settings > Build > Compiler > Annotation Processors"




일부 버전은 안내에 따라  Settings > Build > Compiler > Annotation Processors에서 해당 설정을 활성화할 수 있지만, 최신 버전의 Android Studio에서는 이 설정의 위치가 살짝 변경되어 그대로 따라가면 찾을 수 없습니다.


이 때에는 File - Other Settings - Default Settings...에서 해당 설정을 확인하실 수 있습니다.


컴파일 문제

컴파일 시 다음과 같은 에러가 발생할 수 있습니다.


Error:Execution failed for task ':app:javaPreCompileDebug'.

> Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath are found to contain annotation processor.  Please add them to the annotationProcessor configuration.

    - lombok-1.16.18.jar (org.projectlombok:lombok:1.16.18)

  Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior.  Note that this option is deprecated and will be removed in the future.

  See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.


Gradle 의존성에 다음 라인을 추가해 해결할 수 있습니다:


annotationProcessor "org.projectlombok:lombok:1.16.18"