본문 바로가기
Backend/Spring

[Gradle] Built-in Task의 내부 실행 순서

by chickenman 2025. 3. 3.

현재 멀티 모듈로 구성된 프로젝트를 만들어 보고 있다.

그런데 최상위 프로젝트에서 build를 실행해도 생성된 jar에 특정 디렉토리 / 파일을 넣는 작업이 되지 않았다. (현재 진행형..)

아무리 AI에 물어보고 찾아봐도 나의 프로젝트 상황과 유사한 케이스가 없어서 직접 gradle의 task 단계를 확인하고 그 중간에 jar 파일에 특정 파일 / 디렉터리를 넣는 custom task를 만들어 보기로 했다. (가능하다면 말이다.)

그렇게 gradle 빌드 도구의 동작 원리에 대해서 자세히 공부해보게 되었다.

 

대표적인 built-in task들의 내부적인 task 실행 순서의 확인은 gradle CLI의 로그 옵션을 사용했다.

-i 옵션을 넣어서 로그를 찍어보면 "Tasks to be executed: [task들]"를 볼 수 있는데, 이 배열에 있는 첫번째 task부터 순서대로 실행되며 성공 시 다음 task로 넘어가고 실패 시 task는 종료되게 된다.

 

아래는 싱글 모듈 프로젝트에서 주요 built-in task들의 내부 실행 task 순서를 설명한다.

1. Clean

"clean" task는 단순히 clean task 만을 실행한다.

2. build

compileJava -> processResources -> classes -> resolveMainClassName

-> bootJar -> jar -> assemble

-> compileTestJava -> processTestResources -> testClasses -> test -> check

-> build

3. bootRun

compileJava -> processResources -> classes -> resolveMainClassName -> bootRun

4. assemble

compileJava -> processResources -> classes -> resolveMainClassName -> bootJar -> jar -> assemble

5. test

compileJava -> processResources -> classes -> compileTestJava -> processTestResources -> testClasses -> test

6. jar

compileJava -> processResources -> classes -> jar

7. bootJar

compileJava -> processResources -> classes -> resolveMainClassName -> bootJar

 

 

참고

https://docs.gradle.org/current/userguide/command_line_interface.html