4.1 KiB
Gradle 빌드 최적화
Gradle은 강력한 빌드 도구이지만, 프로젝트가 커질수록 빌드 시간이 길어지는 문제가 발생할 수 있다. 이 글에서는 Gradle 빌드 성능을 최적화하는 방법을 소개한다.
Gradle 빌드는 여러 단계(초기화, 구성, 실행)를 거치며 실행된다. 빌드 속도를 개선하려면 다음 요소를 고려해야 한다.
- 불필요한 작업 제거: 변경된 파일만 다시 빌드
- 병렬 실행 활용: 멀티코어 CPU 활용
- 의존성 관리 최적화: 캐시 사용 및 중복 제거
- Gradle 자체 설정 최적화: 빌드 캐시, 데몬, 워커 설정
불필요한 작업 방지 (UP-TO-DATE, INCREMENTAL, CACHE)
Gradle은 빌드를 최적화하기 위해 변경된 파일만 다시 빌드하는 기능을 제공한다.
UP-TO-DATE 체크
Gradle은 이전 빌드와 비교하여 변경되지 않은 작업을 건너뛴다.
./gradlew build
출력 로그에서
Task :compileJava UP-TO-DATE
와 같은 메시지가 나오면, 해당 작업이 이전과 동일하여 재실행되지 않았음을 의미한다.
수동으로 캐시 삭제 (강제 실행)
./gradlew clean build
이렇게 하면 모든 파일을 다시 빌드한다. 하지만, 매번 clean을 실행하는 것은 빌드 최적화에 도움이 되지 않는다.
증분 빌드 (Incremental Build)
특정 작업에서 변경된 파일만 처리하도록 @InputFiles, @OutputFiles 등을 활용할 수 있다.
tasks.register<Copy>("copyTask") {
from("src")
into("dest")
}
이렇게 설정하면, src 폴더의 파일이 변경되지 않으면 작업을 재실행하지 않는다.
빌드 캐시 활용
빌드 캐시는 이전 빌드 결과를 저장하여 다시 사용할 수 있도록 한다.
./gradlew build --build-cache
Gradle 설정 파일(gradle.properties)에 빌드 캐시를 활성화할 수도 있다.
org.gradle.caching=true
병렬 빌드 및 워커 설정
Gradle은 기본적으로 여러 작업을 병렬로 실행할 수 있다.
병렬 실행 활성화
멀티 프로젝트 빌드에서 병렬 실행을 활성화하면 속도가 크게 향상될 수 있다.
./gradlew build --parallel
또는 gradle.properties에서 설정할 수도 있다.
org.gradle.parallel=true
Gradle 데몬 사용
Gradle 데몬(Daemon)은 빌드 속도를 높이는 데 중요한 역할을 한다.
./gradlew --daemon
또는 gradle.properties에서 설정 가능하다.
org.gradle.daemon=true
워커 수 증가
멀티코어 CPU를 활용하여 빌드 속도를 높일 수 있다.
org.gradle.workers.max=4
시스템 성능에 맞게 적절한 값을 설정하면 된다.
의존성 관리 최적화
불필요한 의존성 제거
불필요한 의존성이 많으면 빌드 속도가 느려진다.
dependencies 블록을 점검하여 불필요한 라이브러리를 제거한다.
dependencies {
implementation("com.example:unused-library:1.0.0") // 제거 필요
}
dependencyResolutionManagement 설정
settings.gradle.kts에서 의존성 해석을 최적화할 수 있다.
dependencyResolutionManagement {
repositories {
mavenCentral()
}
}
이렇게 하면 Gradle이 중복된 의존성을 다운로드하지 않는다.
로컬 캐시 활용
의존성을 매번 다운로드하지 않도록 로컬 캐시를 활용할 수 있다.
./gradlew build --offline
이렇게 하면 인터넷 없이 로컬에 있는 의존성만 사용한다.
실행 시간 분석 및 프로파일링
Gradle의 --scan 옵션을 사용하면 빌드 성능을 분석할 수 있다.
./gradlew build --scan
또한, --profile 옵션을 사용하면 빌드 시간 프로파일을 확인할 수 있다.
./gradlew build --profile
생성된 build/reports/profile 폴더에서 상세한 분석 결과를 확인할 수 있다.