Gradle 빌드는 아래 이미지와 같이 3개의 Phase(단계)로 구성되어있다.

1. 초기화 단계 (Initialization Phase)
어떤 프로젝트(들)를 빌드할지 정하는 단계
멀티 프로젝트의 경우 이 단계에서 모든 하위 프로젝트 인식함.
- settings.gradle.kts 실행
- settings.gradle.kts 파일에서 project 변수 사용 불가. (project 객체가 초기화 되기 전 시점)
- 이 단계에서 사용 가능한 변수 / 사용 파일 위치
- gradle / settings.gradle.kts, build.gradle.kts
- settings / settings.gradle.kts
rootProject / settings.gradle.kts (제한적 사용 가능.. 안된다고 이해하는게 좋을듯..)
2. 설정 단계 (Configuration Phase)
각 프로젝트의 빌드 스크립트를 해석하고 Task 그래프 구성
- 빌드 스크립트(build.gradle.kts) 실행
- Task 그래프를 구성 (= 어떤 작업을 실행할지 판단)
- 이 단계에서 사용 가능한 변수 / 사용 파일 위치
- gradle / settings.gradle.kts, build.gradle.kts
- project(= this) / build.gradle.kts
- rootProject / build.gradle.kts
- allprojects / build.gradle.kts (프로젝트 루트)
- subprojects / build.gradle.kts (프로젝트 루트)
- extra (or ext) / build.gradle.kts
- build.gradle.kts 파일에서 settings 변수 사용 불가.
- 초기화 단계에서만 사용하도록 제한된 객체
- 이 단계에서 Task들은 실행되지 않음, "등록"만 됨.
- 이 단계에서 gradle.properties 를 다음 두 곳에 맵핑
- project.properties
- project.ext
※ 참고 : Gradle Property 적용 우선순위
1. 명령줄 인자 (ex> -PbuildMode=release): 가장 강력함. 이 값이 항상 우선 적용됨.
2. gradle.properties (프로젝트 루트) : 사용자 전역 설정보다 우선 적용됨.
3. gradle.properties (사용자 홈, 전역설정) : 프로젝트 개별 설정보다 후순위.
3. 시스템 환경변수 (ex> export buildMode=prod) : 쉘/OS 환경에서 설정한 값.
4. Java 시스템 속성 (ex> -DbuildMode=release) : JVM 실행시 설정값.
3. 실행 단계 (Execution Phase)
실제로 Task를 실행하는 단계
- 명령(./gradlew build)에 따라서 필요한 Task "실행"
- 이 단계에서 사용 가능한 변수 / 사용 파일 위치
- gradle / settings.gradle.kts, build.gradle.kts
- project / build.gradle.kts
- rootProject / build.gradle.kts
- doFirst, doLast 등의 Task 액션 사용 가능.
'Gradle' 카테고리의 다른 글
| [개발자의 Gradle] 변수를 사용하는 여러가지 방법 (4) | 2025.07.30 |
|---|---|
| [Gradle] 설정 파일 구조 완전 정복! (4) | 2025.07.15 |
| [Gradle] Gradle Task, 왜 이렇게 많고 헷갈리는 거야? (1) | 2025.07.09 |
| [Gradle] groovy가 좋은거예요? kotlin이 좋은거예요? (0) | 2025.06.09 |
| [Gradle] 프로젝트가 어떻게 생겼을까? (2) | 2025.06.09 |