개발/Java & Kotlin

[Gradle] Gradle을 알아보자!

devhooney 2025. 5. 16. 07:44
728x90

 

 

1. Gradle이란?

 

Gradle은 오픈소스 빌드 도구로, 다음과 같은 특징이 있다.

 

 

  • Groovy 또는 Kotlin DSL을 사용해서 빌드 스크립트를 작성
  • 의존성 관리: 외부 라이브러리 쉽게 다운로드하고 관리
  • 빌드 캐시, 병렬 빌드 지원: 빠른 빌드 가능
  • 유연성: 사용자 정의 태스크 추가 가능
  • 다양한 언어 지원: Java, Kotlin, Scala, Android 등

 

 

 

 

 

728x90

 

 

 

 

 

 

 

 

2. Gradle 주요 개념

 

📦 프로젝트와 태스크(Task)

  • Gradle은 기본적으로 프로젝트 단위로 구성됨
  • 각 프로젝트에는 여러 개의 태스크(task)가 있음
  • 예: 컴파일, 테스트, 패키징, 배포 등

예시

// build.gradle (Groovy DSL)
task hello {
    doLast {
        println 'Hello, Gradle!'
    }
}

$ gradle hello
Hello, Gradle!

 

 

 

🧱 의존성 관리 (Dependency Management)

Gradle은 중앙 저장소(Maven Central, JCenter 등)에서 필요한 라이브러리를 가져와서 사용하게 해준다.

dependencies {
    implementation 'com.google.guava:guava:32.0.1-jre'
    testImplementation 'junit:junit:4.13.2'
}

 

 

 

 

🗂️ 설정 파일 구조

  • settings.gradle(.kts)
    프로젝트의 이름이나 서브 프로젝트 설정을 담당
  • build.gradle(.kts)
    실제 빌드 로직이 들어가는 곳. 가장 많이 다루는 파일
  • gradle.properties
    공통 속성 값(예: 버전, API 키 등) 지정하는 곳

 

 

 

 

 

3. Gradle vs Maven vs Ant

 

항목 Gradle Maven Ant
DSL Groovy/Kotlin XML XML
성능 빠름 (캐시 등) 보통 느림
의존성 관리 O O 수동 설정 필요
유연성 매우 높음 보통 높음 (복잡)

 

 

 

 

 

 

 

 

4. Android에서의 Gradle

 

Android는 기본적으로 Gradle 기반의 빌드 시스템을 사용

  • build.gradle (Project)
    전체 프로젝트에 적용되는 설정 (예: Gradle 버전, 저장소 등)
  • build.gradle (Module)
    앱이나 라이브러리 모듈에 대한 세부 설정 (dependencies, buildTypes 등)
android {
    compileSdk 34

    defaultConfig {
        applicationId "com.example.app"
        minSdk 24
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
        }
    }
}

 

 

 

 

 

 

 

5. 자주 사용하는 명령어

# 빌드 실행
gradle build

# 의존성 확인
gradle dependencies

# 특정 태스크 실행
gradle test

# 캐시 클리어
gradle clean

# 데몬 비활성화 후 실행
gradle --no-daemon build

 

 

 

 

 

 

6. Gradle Wrapper

프로젝트에 포함된 gradlew/gradlew.bat를 통해 Gradle이 설치되어 있지 않아도 빌드 가능하게 해준다.

 

  • ./gradlew build
    로컬에 Gradle이 없어도 해당 프로젝트에 지정된 버전으로 실행 가능

 

 

 

7. 빌드 자동화 도구를 사용하는 이유

컴파일, 테스트, 패키징, 배포와 같은 반복 작업을 자동화하여 개발 생산성을 높일 수 있다.
일관된 빌드 환경을 제공하여 어떤 환경에서나 동일한 빌드 결과를 보장할 수 있다.
증분 빌드, 빌드 캐시, 병렬 처리 등을 통해 빌드 속도를 최적화할 수 있다.
테스트 누락 등 수동 작업 시 발생할 수 있는 휴먼 에러를 방지할 수 있다.
외부 라이브러리를 자동으로 관리하여 의존성 버전 충돌을 줄일 수 있다.
CI/CD와 연동하여 빌드 후 패키징, 배포까지 연속적으로 처리할 수 있다.

 

 

 

 

 

 

끝.

 

 

 

 

 

- 참고

https://www.maeil-mail.kr/question/267

728x90