Back-end/Java

Gradle이란 무엇일까?

xeunnie 2024. 6. 23. 22:22
728x90
반응형

 

Gradle이란?
간단히 말하면 오픈 소스 빌드 자동화 시스템이다.
자바, 그루비, 코틀린 같은 JVM 언어뿐만 아니라 C/C++ 등 다양한 언어들의 프로젝트의 빌드, 테스트, 배포 등을 자동화해주는 도구다.
Gradle은 유연성과 확장성을 갖추고 있어, 대규모 프로젝트에서도 효율적인 빌드 관리를 할 수 있다.

개발하는 동안 사용하는 라이브러리들이 가지고 있는 복잡한 의존관계를 확인하고 함께 다운로드 해주는 역할을 한다.

Gradle의 주요 특징

  1. 빌드 스크립트 언어
    Gradle 빌드 스크립트는 그루비(Groovy) 또는 코틀린(Kotlin) 언어로 작성된다.
    이를 통해 유연한 빌드 스크립트 작성이 가능하고, 기존의 안트(Ant)나 메이븐(Maven)보다 더 간결한 빌드 로직 표현이 가능하다다.
  2. 의존성 관리
    프로젝트에서 사용하는 라이브러리와 그 버전들을 관리할 수 있다.
    중앙 저장소(Maven Central, JCenter 등) 또는 로컬 저장소에서 필요한 의존성을 다운로드하여 관리한다.
  3. 멀티프로젝트 빌드 지원
    멀티 프로젝트 구조를 쉽게 지원해 여러 개의 서브 프로젝트로 구성된 대규모 프로젝트를 체계적으로 관리할 수 있다.
  4. 태스크(Task) 기반 빌드
    Gradle 빌드는 태스크(Task) 단위로 구성되며 각 태스크는 특정 작업(컴파일, 테스트, 패키징 등)을 수행하고, 태스크 간의 의존성을 정의하여 빌드 순서를 지정할 수 있다.
  5. 유연한 설정
    Gradle은 설정이 매우 유연해 다양한 빌드 시나리오를 처리할 수 있고, 사용자 정의 태스크를 만들거나 기존 태스크를 확장할 수 있다.
  6. 인크리멘털 빌드
    Gradle은 변경된 부분만 빌드하는 인크리멘털 빌드를 지원하여 빌드 시간을 단축시킵니다.
  7. 플러그인 시스템
    Gradle은 다양한 플러그인을 제공하여 빌드 기능을 확장할 수 있다.
    예를 들어, 자바 프로젝트를 위한 java 플러그인, 안드로이드 프로젝트를 위한 android 플러그인 등이 있다.

Gradle의 주요 개념

  1. 프로젝트(Project) Gradle의 빌드 단위
    각 프로젝트는 하나의 빌드 결과물(예: JAR 파일)을 생성한다.
    대규모 프로젝트는 여러 개의 서브 프로젝트로 구성될 수 있다.
  2. 태스크(Task) 빌드 과정에서 수행되는 작업의 단위
    컴파일, 테스트, 아카이브 생성 등의 작업을 태스크로 정의할 수 있다.
    태스크 간의 의존성을 설정하여 실행 순서를 관리할 수 있다.
  3. 빌드 스크립트(Build Script)
    프로젝트의 빌드 설정을 정의하는 파일이다.
    기본적으로 build.gradle 파일에 작성되며, 여기서 의존성, 태스크, 플러그인 등을 설정한다.

Gradle의 기본 빌드 스크립트 예시

plugins {
    id 'java'
}

group 'com.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework:spring-core:5.3.6'
    testImplementation 'junit:junit:4.13.2'
}

test {
    useJUnitPlatform()
}
  • plugins: 프로젝트에 적용할 플러그인을 정의한다. 여기서는 java 플러그인을 적용하여 자바 프로젝트로 설정한다.
  • group: 프로젝트의 그룹 ID를 정의한다.
  • version: 프로젝트의 버전을 정의한다.
  • repositories: 의존성을 가져올 저장소를 정의한다.
  • dependencies: 프로젝트에서 사용할 의존성을 정의합니다.
  • test: 테스트 설정을 정의한다.

Gradle의 실행

Gradle 빌드를 실행하려면 명령줄에서 gradle 명령을 사용한다.

gradle build

프로젝트의 기본 build 태스크를 실행하여 프로젝트를 컴파일, 테스트, 패키징하는 작업을 수행한다.

728x90
반응형

'Back-end > Java' 카테고리의 다른 글

SLF4J란 무엇일까?  (0) 2024.06.24
Tomcat이란 무엇일까?  (0) 2024.06.24
JDK와 JRE란 무엇일까?  (0) 2024.06.23
JVM이란 무엇일까? 자바가 느린 이유는 뭘까?  (0) 2024.06.23
자바! 알고 사용하자~  (0) 2024.06.23