반응형
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가지만 익히면 실무에서 바로 쓸 수 있다.
'개발관련 > Java' 카테고리의 다른 글
| Java Jad명령어 Decomfile 실행 옵션 (0) | 2025.03.03 |
|---|---|
| Java Reflection (0) | 2021.03.24 |
| JavaDoc 주석 표기법 (0) | 2021.03.24 |
| Console창에서 Javac로 하위폴더 java파일 모두 컴파일 하기 (0) | 2021.03.23 |
| ArrayList와 HashMap의 차이점 (Java Collection) (0) | 2021.03.23 |
