728x90
반응형

Gradle이란?
간단히 말하면 오픈 소스 빌드 자동화 시스템이다.
자바, 그루비, 코틀린 같은 JVM 언어뿐만 아니라 C/C++ 등 다양한 언어들의 프로젝트의 빌드, 테스트, 배포 등을 자동화해주는 도구다.
Gradle은 유연성과 확장성을 갖추고 있어, 대규모 프로젝트에서도 효율적인 빌드 관리를 할 수 있다.
개발하는 동안 사용하는 라이브러리들이 가지고 있는 복잡한 의존관계를 확인하고 함께 다운로드 해주는 역할을 한다.
Gradle의 주요 특징
- 빌드 스크립트 언어
Gradle 빌드 스크립트는 그루비(Groovy) 또는 코틀린(Kotlin) 언어로 작성된다.
이를 통해 유연한 빌드 스크립트 작성이 가능하고, 기존의 안트(Ant)나 메이븐(Maven)보다 더 간결한 빌드 로직 표현이 가능하다다. - 의존성 관리
프로젝트에서 사용하는 라이브러리와 그 버전들을 관리할 수 있다.
중앙 저장소(Maven Central, JCenter 등) 또는 로컬 저장소에서 필요한 의존성을 다운로드하여 관리한다. - 멀티프로젝트 빌드 지원
멀티 프로젝트 구조를 쉽게 지원해 여러 개의 서브 프로젝트로 구성된 대규모 프로젝트를 체계적으로 관리할 수 있다. - 태스크(Task) 기반 빌드
Gradle 빌드는 태스크(Task) 단위로 구성되며 각 태스크는 특정 작업(컴파일, 테스트, 패키징 등)을 수행하고, 태스크 간의 의존성을 정의하여 빌드 순서를 지정할 수 있다. - 유연한 설정
Gradle은 설정이 매우 유연해 다양한 빌드 시나리오를 처리할 수 있고, 사용자 정의 태스크를 만들거나 기존 태스크를 확장할 수 있다. - 인크리멘털 빌드
Gradle은 변경된 부분만 빌드하는 인크리멘털 빌드를 지원하여 빌드 시간을 단축시킵니다. - 플러그인 시스템
Gradle은 다양한 플러그인을 제공하여 빌드 기능을 확장할 수 있다.
예를 들어, 자바 프로젝트를 위한java
플러그인, 안드로이드 프로젝트를 위한android
플러그인 등이 있다.
Gradle의 주요 개념
- 프로젝트(Project) Gradle의 빌드 단위
각 프로젝트는 하나의 빌드 결과물(예: JAR 파일)을 생성한다.
대규모 프로젝트는 여러 개의 서브 프로젝트로 구성될 수 있다. - 태스크(Task) 빌드 과정에서 수행되는 작업의 단위
컴파일, 테스트, 아카이브 생성 등의 작업을 태스크로 정의할 수 있다.
태스크 간의 의존성을 설정하여 실행 순서를 관리할 수 있다. - 빌드 스크립트(Build Script)
프로젝트의 빌드 설정을 정의하는 파일이다.
기본적으로build.gradle
파일에 작성되며, 여기서 의존성, 태스크, 플러그인 등을 설정한다.
Gradle의 기본 빌드 스크립트 예시
plugins {
id 'java'
}
group 'com.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework:spring-core:5.3.6'
testImplementation 'junit:junit:4.13.2'
}
test {
useJUnitPlatform()
}
- plugins: 프로젝트에 적용할 플러그인을 정의한다. 여기서는
java
플러그인을 적용하여 자바 프로젝트로 설정한다. - group: 프로젝트의 그룹 ID를 정의한다.
- version: 프로젝트의 버전을 정의한다.
- repositories: 의존성을 가져올 저장소를 정의한다.
- dependencies: 프로젝트에서 사용할 의존성을 정의합니다.
- test: 테스트 설정을 정의한다.
Gradle의 실행
Gradle 빌드를 실행하려면 명령줄에서 gradle
명령을 사용한다.
gradle build
프로젝트의 기본 build
태스크를 실행하여 프로젝트를 컴파일, 테스트, 패키징하는 작업을 수행한다.
728x90
반응형
'Back-end > Java' 카테고리의 다른 글
SLF4J란 무엇일까? (0) | 2024.06.24 |
---|---|
Tomcat이란 무엇일까? (0) | 2024.06.24 |
JDK와 JRE란 무엇일까? (0) | 2024.06.23 |
JVM이란 무엇일까? 자바가 느린 이유는 뭘까? (0) | 2024.06.23 |
자바! 알고 사용하자~ (0) | 2024.06.23 |