CS

Gradle이란?

leejiwoo21 2024. 4. 29. 15:11

Gradle은 거의 모든 유형의 소프트웨어를 빌드할 수 있을 만큼 유연한 오픈 소스 빌드 자동화 도구이다. Gradle은 빌드하려는 대상이나 빌드 방법을 거의 고정하지 않아 유연하다.

 

출처:

 

Gradle에 대해 알아보자 #1 - Gradle의 기본 개념

주말 밤, 야심차게 인텔리제이를 켰다. 코딩 연습을 하기 위해서다. 재료는 회사 프로젝트. 회사에선 멀티 모듈, 헥사고날 아키텍처로 개발하지만 혼자서 연습할 땐 레이어드 아키텍처를 사용하

velog.io

Gradle은 주로 Java와 Kotlin 기반의 프로젝트를 빌드하는데 사용됩니다.

 

Gradle이 빌드하는 것이 프로젝트이다. 프로젝트에는 빌드 스크립트가 포함되며, 일반적으로 빌드 스크립트

프로젝트의 루트 디렉토리에

 

Java의 경우: build.gradle

kotlin의 경우: build.gradle.kts

라는 이름의 파일이다.

 

위 빌드 스크립트는 해당 프로젝트에 대한 태스크, 의존성, 플러그인 및 기타 구성을 정의한다. 단일 빌드에는 하나 이상의 프로젝트가 포함될 수 있으며, 각 프로젝트에는 하위 프로젝트가 포함될 수 있다.

 

태스크(task)

태스크에는 코드 컴파일, 테스트 실행 또는 소프트웨어 배포와 같은 일부 작업을 실행하기 위한 로직이 포함되어 있다.

태스크는 다음과 같이 구성된다.

- 액션: 파일 복사 또는 소스 컴파일과 같은 작업을 수행하는 작업 조각

- 입력: 액션이 사용하거나 작업하는 값, 파일 및 디렉터리

- 출력: 액션이 수정하거나 생성하는 파일 및 디렉터리

 

의존성(dependancy)

SpringBoot의 의존성은 애플리케이션을 개발할 때 필요한 외부 라이브러리나 프레임워크 등의 모듈을 말합니다.

의존성 관리를 편하게 하기 위해 Maven이나 Gradle과 같은 빌드 도구를 사용하며, 이러한 빌드 도구를 통해 프로젝트에 필요한 의존성을 선언하면, 해당 의존성과 관련된 라이브러리들이 자동으로 다운로드되어 프로젝트에 추가됩니다.

 

플러그인(plugin)

  1. SpringBoot 플러그인:
    Spring Boot 플러그인은 Spring Boot 애플리케이션을 빌드하고 패키징하는 데 사용됩니다. 이 플러그인은 실행 가능한 JAR 파일을 생성하고 의존성을 관리하는 등 Spring Boot 프로젝트에 필요한 기본적인 설정을 제공합니다.
  2. 의존성 관리 플러그인:
    의존성 관리 플러그인은 Spring Boot 프로젝트에서 사용되는 의존성을 관리합니다. 이 플러그인을 사용하면 외부 라이브러리나 모듈을 프로젝트에 추가하고 관리할 수 있으며, 버전 충돌을 방지하고 의존성을 쉽게 업데이트할 수 있습니다.

  3. 다양한 빌드 관리 플러그인:
    Spring Boot 프로젝트에서는 빌드 관리를 위해 다양한 플러그인을 사용할 수 있습니다. 예를 들어, Maven 플러그인이나 Gradle 플러그인을 사용하여 프로젝트를 빌드하고 패키징할 수 있습니다. 또한 코드 품질을 관리하기 위해 정적 분석 툴을 통합하는 등의 작업을 할 수도 있습니다.

이러한 플러그인들은 Spring Boot 프로젝트의 빌드 프로세스를 자동화하고 표준화하여 개발자가 더욱 효율적으로 작업할 수 있도록 도와줍니다. 또한 일반적인 빌드 설정을 제공하여 프로젝트 설정을 간소화하고 일관성을 유지할 수 있도록 합니다.

 

 

빌드 단계

 

Gradle은 빌드 라이프사이클의 세 가지 단계에서 빌드 스크립트를 평가하고 실행한다.

1. 초기화

: 빌드 환경을 성정하고 빌드에 참여할 프로젝트를 결정한다.

 

2. 구성

: 빌드에 대한 테스크 그래프를 구성하고 설정한다. 사용자가 실행하려는 태스크에 따라 어떤 태스크를 어떤 순서로 실행해야 하는지 결정한다.

 

3. 실행

: 선택된 태스크들을 구성 단계의 마지막에 실행한다.

 

빌드는 Gradle 프로젝트에서 태스크들을 실행하는 것이다. Gradle은 빌드를 구성하고 실행할 태스크를 선택한다. 요청된 태스크와 해당 의존성을 기반으로 가장 작은 태스크 집합을 실행한다.