Gradle이란?
Gradle은 빌드 자동화 시스템으로 빌드, 테스트, 배포와 같은 작업을 자동화하는 데 사용된다. Java와 같은 다양한 언어와 플랫폼을 지원한다. 다른 빌드 도구로는 Apache Maven, Apache Ant가 있다.
Gradle
Gradle은 빌드 자동화 시스템으로 빌드, 테스트, 배포와 같은 작업을 자동화하는 데 사용된다. Java와 같은 다양한 언어와 플랫폼을 지원한다. 다른 빌드 도구로는 Apache Maven, Apache Ant가 있다.
대규모 프로젝트에서 의존성 관리와 빌드 작업을 효율적으로 처리하는 데 유용한다.
장점
- 유연성 : 다양한 언어와 플랫폼을 지원하며, 고도의 사용자 정의가 가능하다.
- 성능 : 빌드 캐시와 병렬 빌드 기능으로 빌드 시간을 줄일 수 있다.
- 의존성 관리 : 중앙 저장소와 로컬 저장소를 톻한 의존성 관리가 쉽다.
- 확장성 : 다양한 플러그인을 통해 빌드 시스템을 쉽게 확장할 수 있다.
개념
프로젝트 (Project)
빌드해야 할 소프트웨어의 단위이다.
애플리케이션, 라이브러리 등이 있다.
태스크 (Task)
빌드 과정 중에서 수행해야 할 작업이다.
컴파일, 테스트, 배포를 위한 패키징 등이 있다.
기능
빌드 스크립트 (build.gradle)
Gradle 빌드 스크립트는 주로 Groovy 또는 Kotilin DSL을 사용하여 작성된다.
해당 스크립트에는 프로젝트의 빌드, 테스트, 배포 작업이 어떻게 이루어져야 하는지에 대한 정보가 포함되어있다.
Spring Boot에서 gradle을 사용할 때, build.gradle이라는 스크립트 파일을 빌드 스크립트로 사용한다.
의존성 관리
프로젝트에 필요한 라이브러리나 플러그인을 build.gradle에 선언하면 Gradle이 이를 자동으로 다운로드하여 프로젝트 빌드 과정에서 사용한다.
해당 라이브러리에 해당하는 저장소에서 의존성을 가져오거나, 로컬 파일을 지정하여 사용 가능하다.
gradle 기본 명령어
./gradlew tasks
- 프로젝트의 모든 태스크 목록을 출력한다.
--all옵션을 추가하면 숨겨진 태스크까지 볼 수 있다.
1
./gradlew tasks
./gradlew build
- 프로젝트를 빌드한다.
- 컴파일, 테스트, 패키징 등의 작업이 포함된다.
1
./gradlew build
./gradlew clean
- 프로젝트가 빌드한 결과물을 삭제한다. 빌드할 때 오류가 발생하여 다시 처음부터 빌드할 때 사용한다.
1
./gradlew clean
- 다음과 같이 명령어를 합성하여 기존의 빌드 결과물을 지우고 다시 빌드할 수 있다.
1
./gradlew clean build
./gradlew test
- 프로젝트의 테스크 코드를 실행한다.
1
./gradlew test
./gradlew bootJar
- 프로젝트를 실행 가능한
.jar파일로 변환된다. 이때.jar파일은 애플리케이션을 실행할 때 필요한 모든 의존성을 포함하여 해당 파일만 있어도 실행이 가능하다.
1
./gradlew bootJar
./gradlew jar
- 해당 명령어도 프로젝트를
.jar파일로 변환한다. 하지만 해당.jar파일은 의존성 라이브러리가 포함되지 않는다. 만약 의존성을 가지고 있는 프로젝트였다면 단독으로 실행할 수 없어 추가 설정이 필요하다.
1
./gradlew jar
예시
- 태스크 목록을 출력하여 보았다.
애플리케이션, 빌드, 빌드 설정, 문서 등과 같이 각 작업에 따라 태스크가 할당되어있는 것을 볼 수 있다. 하나씩 읽어보면 다 이해가 되는 설명들이었다.
가만히 보고있으니 Intellij에 오른쪽 사이드바에 Gradle에 있는 Tasks와 같은 구조임을 떠올리게 되었다. 해당 태스크들을 터미널에 명령어를 작성하지 않고 아래 사진에서 태스크를 선택하여 간단하게 실행 가능함을 알게 되었다.
- 이제 해당 애플리케이션을
.jar파일로 패키징하여 파일로써 애플리케이션을 실행할 수 있도록 해보았다.
모든 의존성을 포함하여 패키징하는 bootJar를 이용해서 패키징하였다. 빌드가 성공된 후 /build/libs/에 .jar파일이 생성됨을 확인할 수 있다.
원문: Velog




