Gradle 빌드 과정을 살펴보자

Hyuk4316·2024년 1월 25일
1

Gradle

목록 보기
1/1
post-thumbnail

배경

Gradle을 사용하면서 복붙밖에 하지 못해 프로젝트 구성에 어려움을 겪었다.
그래서 Gradle 원리를 파악하고 Gradle 요소를 보면 다르게 보이지 않을까? 싶어서 글을 정리해보게 되었다.

Task Dependencies

Gradle: Life Cycle에서는 '빌드의 작성자라면 tasks 간에 dependencies를 정의하고 의존 순서에 맞게 실행됨을 보장해야 한다.' 라고 하고 있다. 즉 여러 테스크의 순서를 조절해 tasks를 만드는 것이다.

Build

우선 Build Task를 실행시켜보면서 어떤일이 일어나는지 살펴보자.
Build명령을 실행시키면 기본적으로 다음과 같은 로그가 나온다.

build.gradle.kts

plugins {  
	id("java")  
}  
  
group = "org.example"  
version = "1.0-SNAPSHOT"  
  
repositories {  
	mavenCentral()  
}  
  
dependencies {  
}
Executing 'build'...

> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes
> Task :jar
> Task :assemble
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build

BUILD SUCCESSFUL in 98ms
2 actionable tasks: 2 executed
Execution finished 'build'.

여기서 여러 Task가 나열된 것을 볼 수 있는데, 이것이 Build Task가 실행되면서 실행된 Task 종류다.
이처럼 하나의 Task안에서도 여러가지 Task가 실행됨을 알 수 있었다.

Life Cycle

Gradle: Life Cycle에서는 Build에 3가지 단계가 있다고 했다.
첫번째는, 초기화(Initialization). 두번째는, 설정(Configuratoin). 세번째는, 실행(Execution)이다.
|400

Initialization

  • settings.gradle을 찾고
  • Settings 인스턴스를 만든다.
  • 빌드에 포함할 project를 확인한다.
  • 프로젝트별 Project인스턴스를 생성한다

Configuration

  • 프로젝트가 빌드에 포함될 때 평가가 이루어진다.
  • task마다 task graph를 생성한다

Execution

  • task를 실행한다.
  • 의존성에 따라 실행 순서를 결정한다.
  • 경우에 따라 병렬로 테스크를 실행한다.

참고자료

https://docs.gradle.org/current/userguide/build_lifecycle.html
- https://docs.gradle.org/current/userguide/img/build-lifecycle-example.png

profile
한국공학대학교 소프트웨어전공 23학번

0개의 댓글