gradle

Gradle 8+

Gradle CLI 빠른 참조 — 프로젝트 task, 의존성 관리, 다중 프로젝트 빌드, 래퍼, 설정 캐시, 빌드 스캔 — 자주 쓰는 옵션과 실전 예시까지 함께 정리했습니다.

명령어 30개

Task

gradle tasks

현재 빌드에 정의된 모든 task를 카테고리별로 나열합니다. `--all`은 내부 / 숨김 task도 표시합니다.

--all; --group=<group>; --quiet

gradle tasks --all
gradle help

특정 task의 도움말을 출력합니다 — 설명, 그룹, 선언된 입출력.

gradle help --task build
gradle :<module>:tasks

다중 프로젝트 빌드에서 특정 하위 프로젝트의 task를 나열합니다(`<module>`을 Gradle 경로로 대체).

gradle :web:tasks --all

라이프사이클

gradle build

표준 JVM 빌드 체인을 실행합니다: `compile → processResources → classes → jar → test → check → assemble`(설정된 경우 zip 배포까지).

-x <task> task 제외; --parallel; --build-cache; --configuration-cache

gradle build -x test
gradle clean

빌드 디렉터리(`build/`)를 삭제해 다음 빌드가 모든 task를 처음부터 다시 실행하게 합니다.

--no-rebuild 기본 라이프사이클 자동 트리거 안함

gradle clean build
gradle assemble

컴파일 및 패키징을 수행하지만 검증 / 테스트 task는 건너뜁니다. jar만 필요할 때 더 빠른 피드백을 줍니다.

gradle assemble
gradle check

검증 task(`test`, `lint` 등)를 모두 실행하지만 jar는 생성하지 않습니다. CI에서 머지 전 게이트로 사용하세요.

--continue task 실패 후에도 계속

gradle check --continue
gradle test

단위 테스트(Test task)를 실행합니다. 특정 클래스 / 메소드로 좁히려면 `--tests <pattern>`을 사용하세요.

--tests com.acme.UserServiceTest; --tests '*User*'; --info

gradle test --tests 'com.acme.*ServiceTest'

의존성

gradle dependencies

설정(configuration)에 대해 해석된 의존성 트리를 출력합니다(예: `compileClasspath`, `runtimeClasspath`, `testCompileClasspath`).

--configuration <name>; --all 모든 config 표시

gradle dependencies --configuration runtimeClasspath | grep -i slf4j
gradle dependencyInsight --dependency <id>

단일 의존성이 특정 버전으로 결정된 이유를 설명합니다 — 버전 충돌 해소에 유용합니다.

--dependency <group:artifact>; --configuration <name>

gradle dependencyInsight --dependency com.fasterxml.jackson.core:jackson-databind
gradle buildEnvironment

해석된 빌드 스크립트 classpath를 출력합니다 — 빌드 자체가 사용하는 모든 플러그인 / 헬퍼 라이브러리.

gradle buildEnvironment
gradle refresh-dependencies

동적 버전과 스냅샷 의존성을 강제로 재해석합니다.

--refresh-keys

gradle build --refresh-dependencies

다중 프로젝트

gradle projects

리액터의 모든 프로젝트(루트 + 하위 프로젝트)를 프로젝트 경로와 설명과 함께 나열합니다.

gradle projects
gradle :<module>:<task>

Gradle 경로(`:` 구분자)를 사용해 한 하위 프로젝트에서 task를 실행합니다.

-p <dir> 하위 디렉터리에서 시작

gradle :order-service:test :web:assemble
gradle <task> --parallel

독립적인 task를 병렬로 실행합니다 — 독립적인 테스트 스위트를 가진 다중 모듈 빌드에 유용합니다.

--max-workers=<N>; --no-parallel

gradle test --parallel --max-workers=4

성능

gradle --build-cache <task>

로컬 빌드 캐시를 활성화합니다(브랜치 / 브랜치 간 task 출력 재사용). CI에서는 `settings.gradle`의 원격 캐시와 함께 사용하세요.

--no-build-cache

gradle assemble --build-cache
gradle --configuration-cache <task>

Gradle 8.x — 설정 단계를 캐시해 대규모 다중 프로젝트 빌드의 시작 시간을 밀리초 단위로 줄입니다.

--no-configuration-cache

gradle test --configuration-cache
gradle --no-daemon <task>

Gradle 데몬을 비활성화합니다 — 메모리가 적은 CI나 데몬 전용 버그를 진단할 때 유용합니다.

gradle --no-daemon test
gradle --stop

실행 중인 모든 Gradle 데몬을 중지합니다. 캐시된 상태가 의심스러우면 클린 리빌드와 함께 사용하세요.

gradle --stop && gradle clean build

진단

gradle --scan <task>

task를 실행한 뒤 빌드 스캔을 게시합니다(끝에 링크 출력). 한 번 빌드 스캔 약관 수락이 필요합니다.

--scan -Dscan.tag.<name>=<value>

gradle assemble --scan
gradle --info <task>

INFO 로깅을 활성화합니다 — task 시작/종료, 최신 확인, 의존성 해석.

--debug / -d 더 자세한 출력

gradle test --info | tee gradle-info.log
gradle --stacktrace <task>

모든 실패에 대해 전체 스택 트레이스를 출력합니다.

--warning-mode=all 모든 deprecation 경고 표시

gradle build --stacktrace

래퍼

./gradlew <task>

Gradle Wrapper를 통해 task를 실행합니다 — `gradle/wrapper/gradle-wrapper.properties`에 고정된 Gradle 버전을 사용합니다.

./gradlew clean build
gradle wrapper --gradle-version <v>

특정 Gradle 배포판으로 래퍼 파일을 생성/갱신합니다.

--distribution-type bin | all; --gradle-distribution-url <url>

gradle wrapper --gradle-version 8.7 --distribution-type bin

게시

gradle publish

`build.gradle`의 `publishing` 아래에 선언된 리포지터리로 아티팩트를 업로드합니다. 자주 쓰는 대상: Sonatype를 통한 Maven Central, 사설 Nexus / Artifactory.

-Drelease.useAutomaticVersion=true; -PpublishTo=staging

gradle publishToMavenLocal
gradle publishToMavenLocal

빌드를 로컬 Maven 리포지터리(`~/.m2/repository`)에 설치해 인접한 Maven 빌드가 의존할 수 있게 합니다.

gradle publishToMavenLocal

기타

gradle --version

Gradle / JVM / OS 정보(데몬 상태 포함)를 출력합니다.

gradle --version
gradle properties

모든 프로젝트 속성(ext.*, gradle.*, system)을 나열합니다 — 재정의된 값을 추적할 때 유용합니다.

gradle properties | grep version
gradle init

새 Gradle 프로젝트를 부트스트랩합니다 — DSL(Groovy / Kotlin) 선택, 프로젝트 유형 선택, 옵션으로 Git 원격 연결.

--type basic; --type java-application; --type java-library; --dsl groovy|kotlin

gradle init --type java-library --dsl kotlin
gradle :<module>:tasks --group <name>

task 목록을 단일 task 그룹(`build`, `verification`, `documentation`, `help` 등)으로 필터링합니다.

gradle tasks --group verification

관련 명령어 치트시트

Gradle 소개

Gradle은 2008년에 처음 출시된 JVM 기반 빌드 도구입니다(Hans Dockter와 Gradleware / Gradle Inc 팀이 만들었습니다). Apache Ant의 표현력과 Apache Ivy의 의존성 관리를 Groovy 기반 DSL로 결합해 만들었으며, 지금은 Kotlin으로도 사용 가능합니다(Kotlin DSL, `.kts`). Gradle은 Android 빌드(Android Studio의 기본), Spring Boot 스타터, Kotlin Multiplatform, 그리고 많은 대규모 JVM 모노레포를 구동합니다. 현재 안정 라인은 Gradle 8.x(8.7+)입니다. Gradle은 task 입출력 핑거프린팅을 통한 점진적 빌드, 병렬 task 실행, 빌드 캐시(로컬 + 원격), 설정 캐시(8.x)에서 뛰어납니다. task는 `build.gradle` / `build.gradle.kts`에 선언되고 `dependsOn`으로 체인으로 묶이며, 플러그인이 새 task를 추가합니다(`java`, `java-library`, `application`, `org.springframework.boot`, `com.android.application`). Gradle은 소스 코드를 업로드하지 않으며, 게시 플러그인이 선언한 아티팩트만 전송합니다. 래퍼(`gradlew`)는 `gradle-wrapper.properties`에 고정된 Gradle 배포판을 다운로드하는 작은 실행기를 함께 제공해, 모든 개발자와 CI 에이전트가 동일한 Gradle 버전을 사용하도록 보장합니다.

치트시트 버전 1.0.0