코딩하는 해달이

[Spring] Gradle이란? 본문

개인 공부/Spring

[Spring] Gradle이란?

코딩하는 해달 2024. 9. 25. 16:33

Gradle


Java나 Groovy, Kotlin등 여러 유형의 소프트웨어를 빌드할 수 있는 오픈 소스 빌드 자동화 도구이다. Gradle은 빌드하려는 대상이나 방법을 거의 고정하지 않아 유연하다.

Gradle이 자동화 할 수 있는 작업들

  • Compile - Java 파일의 소스코드를 컴퓨터가 이해할 수 있도록 바이트 코드로 변환
  • Test - 유닛 테스트, UI 테스트
  • Packaging - 스프링 코드를 패키징 해 .jar 파일이나, .war 파일로 생성
  • Deploy & Run - 서버 실행

용어 정리

  • 프로젝트 - Gradle이 빌드하는 것, 프로젝트에는 빌드 스크립트가 포함되며 해당 프로젝트에 대한 태스크, 의존성, 플러그인 및 기타 구성을 정의한다.
  • 태스크 - 코드 컴파일, 테스트 실행 또는 배포와 같은 특정 작업을 실행하기 위한 로직을 포함하는 기본단위
  • 플러그인 - 로직과 구성을 재사용할 수 있는 수단을 제공하는 모듈, 플러그인을 사용함으로써 빌드 스크립트의 중복을 줄일 수 있다.

Gradle Project 구성

  • .gradle - gradle 버전 별 엔진 및 설정 파일
  • .idea - 에디터 관련 파일
  • gradle/wrapper - 사용자가 Gradle을 설치하지 않아도 태스크를 실행할 수 있도록 도와줌
    • gradle-wrapper.jar - Wrapper 파일로 실행 스크립트가 동작하면 Wrapper에 맞는 환경을 로컬 캐시가 다운로드 받고 명령에 해당하는 태스크 실행
    • gradle-wrapper.properties - gradle Wrapper 설정 파일
  • gradlew - Unix용 실행 스크립트
  • gradlew.bat - Windows용 실행 스크립트
  • build.gradle - 의존성이나 플러그인 설정 등 프로젝트 빌드에 대한 모든 기능 정의
  • settings.gradle - 빌드할 프로젝트 정보 설정

빌드 도구 종류와 차이점

Maven

  • 언어 : 주로 Java
  • 구성 : XML 기반의 pom.xml 파일을 사용하여 프로젝트 의존성과 빌드 설정을 정의
  • 특징
    • 의존성 관리를 자동화하고, 라이프 사이클을 정의하여 특정 작업 순서 보장
    • 커뮤니티에서 제공하는 많은 플러그인 사용 가능
    • XML 구성이 비교적 복잡

Gradle

  • 언어 : Java, Groovy, Kotlin
  • 구성 : Groovy 또는 Kotlin DSL을 사용하여 build.gradle 파일로 정의
  • 특징
    • 유연한 구성과 커스터마이징 기능을 제공
    • 태스크 기반 모델, 의존성 관리 및 빌드 과정을 설정 가능
    • 병렬 빌드를 지원, 대규모 프로젝트에서 효율적

Ant

  • 언어: Java
  • 구성: XML 기반의 build.xml 파일을 사용
  • 특징:
    • 매우 유연, 기본적으로 의존성 관리 기능 제공 X
    • 태스크를 직접 정의, 상대적으로 설정이 복잡
    • 점진적으로 사용되며, 현대의 빌드 도구에 비해 덜 사용됩니다.

Make

  • 언어: 주로 C/C++
  • 구성: Makefile을 사용하여 빌드 명령과 의존성 정의
  • 특징:
    • 간단한 빌드 및 컴파일 작업에 적합
    • 명령어를 직접 작성
    • UNIX 기반 시스템에서 주로 사용

Bazel

  • 언어: 다수 언어 지원
  • 구성: Starlark 스크립트를 사용하여 빌드 구성을 정의
  • 특징:
    • 대규모 소프트웨어 프로젝트를 위해 설계
    • 모듈화된 아키텍처와 강력한 캐시 기능을 제공

SBT(Simple Build Tool)

  • 언어: Scala, Java
  • 구성: Scala DSL로 빌드 설정을 정의
  • 특징:
    • Scala와 Java 프로젝트에 적합, REPL 환경을 제공하여 빠른 피드백 가능
    • 의존성 관리 및 빌드 자동화 기능 지원

 

 

 

반응형

'개인 공부 > Spring' 카테고리의 다른 글

RESTful API  (2) 2024.10.21
Comments