Gradle에서 빌드 속도를 개선하는 방법은 무엇인가요?
_____A1:
- `–profile` 옵션으로 빌드 프로파일 보고서를 생성해 주요 단계별 소요 시간을 확인합니다.
- Gradle Build Scan(–scan) 기능을 활용해 설정, 컴파일, 테스트 등 단계별 상세 통계를 수집·분석합니다.
- 빌드 로그에 `–warning-mode all` 을 추가해 잠재적 비효율 설정이나 deprecated API 사용 여부를 파악합니다.
Q2: Gradle 데몬(Daemon) 활성화는 어떻게 하나요?
A2:
- `gradle.properties` 에 아래 옵션을 추가합니다.
· org.gradle.daemon=true
· org.gradle.java.home=[JDK 경로] (필요 시)
- 빌드 간 JVM 프로세스를 재활용해 JVM 시작 및 초기화 오버헤드를 줄입니다.
Q3: 병렬 빌드(Parallel Build)는 어떻게 설정하나요?
A3:
- 멀티모듈 프로젝트에서 모듈 의존관계에 문제가 없다면 `gradle.properties` 에
· org.gradle.parallel=true
· org.gradle.workers.max=[CPU 코어 수*값]
를 추가해 독립적인 서브프로젝트를 동시에 빌드합니다.
Q4: Gradle Build Cache를 사용하면 어떤 이점이 있나요?
A4:
- 빌드 작업 산출물을 로컬/원격 캐시에 저장해 동일 입력에 대해 작업을 재실행하지 않습니다.
- `gradle.properties` 에
· org.gradle.caching=true
· org.gradle.caching.local.enabled=true
· (원격) org.gradle.caching.remote.url=[URL]
- CI 환경과 로컬 간 캐시를 공유하면 빌드 시간을 크게 단축할 수 있습니다.
Q5: 설정 캐시(Configuration Cache)는 무엇이며 어떻게 적용하나요?
A5:
- Gradle 6.7+ 기능으로 `settings.gradle`·`build.gradle` 스크립트 구성을 캐싱해 설정 단계를 생략합니다.
- `gradle.properties` 또는 명령행에 `–configuration-cache` 를 추가합니다.
- 플러그인 호환성 이슈를 확인해야 하며, 비호환 항목은 빌드 시 경고로 표시됩니다.
A6:
- 사용하지 않는 라이브러리 의존성을 제거합니다.
- `implementation`·`api`·`compileOnly` 등 적절한 컴파일 범위(scope)를 지정해 불필요한 클래스 경로 로드를 방지합니다.
- 멀티 모듈 시 모듈 분리 기준을 명확히 해 변경 범위를 최소화합니다.
Q7: 인크리멘탈(증분) 컴파일을 어떻게 활용하나요?
A7:
- Gradle이 Java/Kotlin 컴파일 시 변경된 소스만 다시 컴파일하도록 기본 제공됩니다.
- `kotlin.incremental=true` (Kotlin) 등 언어별 플러그인 옵션을 활성화합니다.
- 빌드 스크립트 내 `@Incremental` 어노테이션(커스텀 플러그인) 활용으로 추가 증분 처리를 구현할 수 있습니다.
Q8: 플러그인과 스크립트 설정을 경량화하려면?
A8:
- 사용 빈도가 낮은 플러그인은 필요 시에만 apply하거나 `pluginManager.withPlugin` 블록으로 지연 로드합니다.
- 설정(`allprojects`·`subprojects`)을 범위를 최소화해 스크립트 평가 시간을 단축합니다.
- Groovy DSL 대신 Kotlin DSL로 전환하면 컴파일 타임 타입 검사로 스크립트 에러를 줄이고 캐싱 효율을 높일 수 있습니다.
Q9: 테스트 단계에서 속도를 높이는 방법은?
A9:
- `test` 태스크에 `maxParallelForks` 옵션을 설정해 병렬로 테스트를 실행합니다.
- 불필요한 통합 테스트는 태그(예: JUnit 5 @Tag)로 분리하고, 로컬 빌드 시 빠른 유닛 테스트만 실행하도록 설정합니다.
- 테스트 리소스(인메모리 DB, mocking)를 활용해 I/O 비용을 줄입니다.
Q10: Gradle 버전 업그레이드는 왜 중요한가요?
A10:
- 매 릴리스마다 빌드 성능 최적화, 새로운 캐시·데몬 기능, 프로파일링 개선 등이 포함됩니다.
- Gradle Wrapper(`gradlew wrapper --gradle-version`)로 프로젝트마다 버전을 고정해 일관된 빌드 환경을 유지합니다.
Q11: 빌드 스크립트·JVM 튜닝 팁이 있나요?
A11:
- `gradle.properties` 에 JVM 힙, GC 옵션을 설정:
· org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC
- 로그 레벨은 기본(INFO)으로 유지하고, 디버그 로그는 필요한 경우에만 활성화해 불필요한 I/O를 줄입니다.
이상 주요 FAQ를 적용하면 Gradle 빌드 속도를 효과적으로 개선할 수 있습니다.
작성자:
최다희 [비회원]
| 작성일자: 1년 전
2025-01-01 07:51:33
조회수: 262 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 262 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.