Files
gradle-examples/doc/10_빌드 최적화.md
2025-02-22 01:13:24 +09:00

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 폴더에서 상세한 분석 결과를 확인할 수 있다.