build script의 실행 순서 - 작성 순서대로
build scripts는 기본적으로 작성 순서대로 실행됩니다.
build, assemble, createDoc 순서로 작성되었다면, 다음과 같이 실행됩니다.
또한, 스크립트가 실행되기 전에 task graph를 아래와 같이 생성하게 됩니다.
* DAG(Directed Acyclic Graph)로 순환하는 사이클이 없고, 단방향 형태의 graph가 됩니다.
gradle의 빌드 실행은 첫번째 초기화 단계, 두 번째 구성 단계, 세 번째 실행 단계로 총 3단계로 이루어져있습니다.
1. Initialization phase : 초기화 단계 - settings.gradle파일 이용
setting.gradle파일을 읽어서 Setting 인스턴스를 생성합니다.
setting 파일에 따라서 project 별로 Project 인스턴스를 생성합니다.
* 인스턴스는 자바 메모리 상에 해당 객체들이 올라가는 것을 의미합니다.
2. Configuration Phase : 구성 단계 - build.gradle파일 사용
빌드 실행에 영향을 받는 빌드 스크립트를 판단하고 이를 통해 task graph를 생성합니다.
3. Execution Phase : 실행
의존 관계에 따라서, 선택된 task를 스케줄링 및 실행합니다.
각 task는 병렬적으로 실행할 수도 있습니다.
실행 예시 - developer 태스크 실행
// settings.gradle
rootProject.name = 'wjSpring'
print("this is initialization phase\n") // 1. settings.gradle파일로 초기화 단계에서 실행
// build.gradle
tasks.register("developer"){
doFirst { // 3. 실행단계에서 처음에 실행하도록 설정
print "hello developer1\n"
}
doFirst { // 3. 실행단계에서 처음에 실행하도록 설정
print "hello developer3\n"
}
print("Hello World!\n") // 2. 구성단계에서 실행
doLast {
print "good bye" // 3. 실행단계에서 마지막에 실행하도록 설정
}
}
tasks.named("developer"){
doFirst {
print "hello developer2\n" // 3. 실행단계에서 처음에 실행하도록 설정
}
}
위 build파일에서 생성되는 task graph는 아래와 같습니다.
실행 로그를 확인해보면,
1. 실행단계 코드가 먼저 실행되고
2. 구성 단계 코드가 실행되며
3. 마지막으로 task graph에 따라서 순차적으로 실행됩니다.
this is initialization phase
Hello World!
> Task :developer
hello developer2
hello developer3
hello developer1
good bye
BUILD SUCCESSFUL in 92ms
1 actionable task: 1 executed
오전 12:54:32: 실행이 완료되었습니다 'developer'.
* doFirst : 현재 build task graph의 상태에서 가장 앞에 추가
* doLast : 현재 build task graph의 상태에서 가장 마지막에 추가
참고자료
Gradle Docs
https://docs.gradle.org/current/userguide/build_lifecycle.html
gradle에 대해서 나름대로 정리해보는데, 재미있네요~!
구체적으로 알 수록 재밌있어 놀랍군요 ㅎㅎ
'Gradle' 카테고리의 다른 글
[Gradle] Gradle - Task개념 및 jar 생성 후 복사하기(.feat Copy) (1) | 2024.01.31 |
---|
댓글