반응형

Gradle은 “명령어”라기보다 Task 실행기에 가깝다.
즉 build, test, bootRun 같은 것들은 모두 Task이고, 우리는 원하는 Task를 실행하는 방식으로 Gradle을 사용한다.

실무에서는 반드시 Wrapper(./gradlew)로 실행하는 게 기본이다.
(팀/CI에서 Gradle 버전이 달라져서 생기는 문제를 없애기 위해)

 

1) Gradle 실행 방식 : gradle vs ./gradlew

 

  • gradle은 내 PC에 설치된 Gradle 버전을 사용
  • 프로젝트가 요구하는 버전과 다르면 빌드가 깨질 수 있음
  • Jenkins/ArgoCD 같은 CI/CD 환경에서도 Wrapper가 표준

 

2) 빌드 기본 4종 세트

명령어 의미 비고
clean 빌드 산출물 삭제 build/ 디렉토리 삭제
build 컴파일 + 테스트 + 패키징 가장 자주 씀
assemble 테스트 없이 패키징 빠른 빌드
check 테스트 + 검증 작업 정적 분석 포함 가능

 

 

예시

./gradlew clean build 
./gradlew assemble 
./gradlew check

 

 

3) 테스트 관련

 

전체 테스트 실행

./gradlew test

 

특정 테스트만 실행

./gradlew test --tests com.example.MyServiceTest
./gradlew test --tests "*MyServiceTest"

 

테스트 제외하고 빌드

./gradlew build -x test

 

  • -x <task> 옵션은 특정 Task를 제외할 때 사용
  • CI에서 “일단 패키징만” 할 때 자주 씀

 

4) Spring Boot 실행/패키징

 

개발 실행

./gradlew bootRun

 

 

실행 가능한 JAR 생성

./gradlew bootJar

 

빌드된 JAR 실행

java -jar build/libs/*.jar

참고로 jar는 “일반 라이브러리 JAR”이고,
bootJar가 “실행 가능한 Spring Boot JAR”이다.

 

 

5) 의존성(Dependency) 분석 (충돌 해결에 필수)

 

전체 의존성 트리

./gradlew dependencies

 

런타임 클래스패스만 보기

./gradlew dependencies --configuration runtimeClasspath

 

특정 라이브러리가 왜 들어왔는지 추적 (제일 유용)

./gradlew dependencyInsight --dependency jackson --configuration runtimeClasspath
  • “버전 충돌”, “왜 이 버전이 선택됐지?” 같은 문제를 잡을 때 핵심 명령어

 

6) Task 목록 확인 (Gradle의 본질)

 

실행 가능한 Task 목록

./gradlew tasks

 

모든 Task 상세 목록

./gradlew tasks --all

Gradle은 프로젝트에 적용된 플러그인에 따라 Task가 달라진다.
그래서 모르면 tasks부터 보는 게 기본이다.

 

 

7) 디버깅/로그 옵션

에러가 났는데 로그가 부족하면 아래 옵션이 바로 답이다.

./gradlew build --stacktrace
./gradlew build --info
./gradlew build --debug
옵션 설명
--stacktrace 예외 스택 트레이스 출력
--info 좀 더 자세한 로그
--debug 매우 상세한 로그

 

 

8) 캐시/의존성 강제 갱신 (사내 Nexus 환경에서 자주 씀)

 

의존성 다시 받기

./gradlew build --refresh-dependencies

 

  • “Nexus에 업로드 했는데 반영이 안 되는 느낌”
  • “캐시 꼬였나?” 이럴 때 제일 먼저 시도

 

9) 실무에서 제일 많이 쓰는 명령어 TOP 7

./gradlew clean build
./gradlew build -x test
./gradlew test
./gradlew bootRun
./gradlew bootJar
./gradlew dependencies
./gradlew dependencyInsight --dependency <name> --configuration runtimeClasspath

 

 

마무리

Gradle은 “명령어 암기”보다
Task 개념 + 의존성 분석 + 옵션(--stacktrace) 이 3가지만 익히면 실무에서 바로 쓸 수 있다.

+ Recent posts