kapt
20 Sep 2020kapt
- 코틀린에서 Annotation Processor를 지원하기 위한 컴파일러 플러그인
Annotation Processing
- 컴파일 시점에 Annotation 정보를 읽어 내용을 컴파일에 적용한다.
Java 코드와 Kotlin 코드의 빌드 과정
Java 코드와 Kotlin 코드의 빌드 과정은 다음과 같은 순서로 이루어진다.
- Kotlin 컴파일러가 Kotlin 코드를 컴파일해 .class 파일을 생성한다. 이 과정에서 Kotlin 코드가 참조하는 Java 코드가 함께 로딩되어 사용된다.
- Java 컴파일러가 Java 코드를 컴파일해 .class 파일을 생성한다. 이때 이미 Kotlin이 컴파일한 .class 파일의 경로를 클래스 패스에 추가해 컴파일한다.
문제 상황 1
Lombok이 적용된 소스를 코틀린에서 사용할 때
- Lombok의 컴파일은 위 이미지의 단계 중 Annotation Processing 단계에서 진행된다.
- Lombok의 컴파일보다 코틀린 컴파일이 먼저 진행되기 때문에 Lombok이 적용된 소스가 적용되지 않는다.
해결 방법
- Lombok을 제거한다.
문제 상황 2
Querydsl 적용시
- Annotation Processing을 진행할때 코틀린 코드를 인지할 수 없다.
해결 방법
- kapt 플러그인을 적용해서 문제를 해결한다.