Build
Build는 소스 코드와 리소스를 컴파일하고, 테스트 및 패키징하여 실행 가능한 형태로 만드는 과정입니다. 개발자가 작성한 코드를 컴퓨터가 이해하고 실행할 수 있는 형태로 변환하는 필수적인 작업입니다.
Kotlin Build
Kotlin Build Process를 그림으로 나타내면 다음과 같습니다.
Kotlin 또한 JVM위에서 동작하기 때문에 Java의 빌드 과정과 매우 유사합니다. Java는 .java 파일을 Java Compiler를 통해 .class 파일로 변환을 하고 Kotlin은 .kt 파일을 Kotlin Compiler를 통해 .class 파일로 변환을 합니다.
해당 파일은 .class 파일은 Kotlin Runtime Library에 의존되어 실행합니다. (Kotlin Runtime Library에는 Kotlin 자체 표준 라이브러리 클래스와 Kotlin에서 Java API의 기능을 확장한 내용 등이 있습니다.)
Java&Kotlin Build
하지만 프로젝트에 Kotlin과 Java가 혼용되어 있다면 Build는 어떻게 진행될까요?
Build 방식은 Tool(Gradle, Maven) 또는 설정에 따라 두 가지 유형으로 나뉘어 지는데 Java Compiler를 먼저 하는 경우와 Kotlin Compiler를 먼저 하는 경우로 나뉘어집니다.
주의해야할 점은 Kotlin Compiler를 먼저 하는 경우에서 일반적인 Java 코드를 포함하는 경우에는 문제가 없지만 Java Annotation Processing로 생성되는 코드를 사용한다면 컴파일 오류가 발생합니다. 왜 일까요? Java Annotation Processing는 Java Compiler 단계에서 실행되기 때문입니다.
Java Annotation Processing
Java Annotation Processing은 Java Compiler 자체에 내장된 기능이 아닙니다. 대신, Java Compiler에 의해 실행되는 별도의 플러그인 메커니즘이라고 볼 수 있습니다.
해결 방안
- Kotlin Annotation Processing Tool (kapt) 사용
- kapt는 Kotlin에서 Java Annotation Processing을 지원하기 위한 도구로, Java Annotation Process를 Kotlin 프로젝트에 통합할 수 있습니다.
- 빌드 순서 조정
- Kotlin과 Java 코드 간의 상호 참조 문제가 있다면, Gradle 또는 Maven에서 빌드 순서를 명확히 지정해야 합니다.
- Gradle Incremental Annotation Processing 활성화
- Annotation Processing이 많은 프로젝트에서는 빌드 속도가 느려질 수 있습니다. Gradle의 Incremental Annotation Processing을 활성화하면 빌드 성능을 개선할 수 있습니다.
kapt {
correctErrorTypes = true // 잘못된 타입 오류 무시
useBuildCache = true // 빌드 캐시 활성화
incremental = true // 증분 애노테이션 프로세싱 활성화
'프로그래밍 언어 > Kotlin' 카테고리의 다른 글
Companion Object (4) | 2025.04.24 |
---|---|
Nested Class, Inner Class (0) | 2025.04.24 |
Null 처리 (2) | 2025.04.23 |