Gradle 명령줄 인터페이스와 빌드 파일 작성법 마스터하기
Gradle 명령줄 인터페이스와 빌드 파일 작성법 마스터하기
안녕하세요! Gradle 기초 시리즈의 두 번째 포스팅에 오신 것을 환영합니다. 어제는 Gradle의 기본 개념과 프로젝트 구조에 대해 알아보았는데요. 오늘은 Gradle의 명령줄 인터페이스(CLI)와 빌드 파일 작성법에 대해 자세히 살펴보겠습니다.
Gradle 명령줄 인터페이스(CLI) 기초
명령줄 인터페이스는 IDE 외부에서 Gradle과 상호 작용하는 주요 방법입니다. Gradle CLI를 사용하면 터미널에서 태스크를 실행하고, 빌드를 검사하고, 의존성을 관리하고, 로깅을 제어할 수 있습니다.
명령 실행하기
Gradle 명령을 실행하기 위해서는 다음과 같은 간단한 구조를 사용합니다:
gradle [태스크이름...] [--옵션명...]
여러 개의 태스크를 공백으로 구분하여 지정할 수 있습니다:
gradle [태스크이름1 태스크이름2...] [--옵션명...]
예를 들어, build 태스크를 실행하려면 다음과 같이 입력합니다:
gradle build
먼저 clean을 실행한 다음 build를 실행하려면:
gradle clean build
명령줄 옵션
Gradle 명령에는 동작을 조정하기 위한 다양한 옵션이 포함될 수 있습니다. 옵션은 태스크 이름 전이나 후에 나타날 수 있습니다:
gradle [--옵션명...] [태스크이름...]
값을 받는 옵션의 경우 명확성을 위해 등호(=)를 사용합니다:
gradle [...] --console=plain
일부 옵션은 토글이며 반대 형태를 가지고 있습니다. 예를 들어, 빌드 캐시를 활성화하거나 비활성화하려면:
gradle build --build-cache
gradle build --no-build-cache
태스크 실행하기
Gradle에서 태스크는 특정 프로젝트에 속합니다. 특히 멀티 프로젝트 빌드에서 실행하려는 태스크를 명확하게 표시하기 위해 콜론(:)을 프로젝트 구분자로 사용합니다.
루트 프로젝트 수준에서 test라는 태스크를 실행하려면:
gradle :test
중첩된 서브프로젝트의 경우 콜론을 사용하여 전체 경로를 지정합니다:
gradle :subproject:test
태스크를 콜론 없이 실행하면 Gradle은 현재 디렉토리의 프로젝트 컨텍스트에서 태스크를 실행합니다:
gradle test
태스크 옵션
일부 태스크는 자체 특정 옵션을 받습니다. 이러한 옵션은 태스크 이름 바로 뒤에 --로 시작하는 접두사를 붙여 전달합니다.
gradle taskName --exampleOption=exampleValue
빌드 파일 작성법
Gradle 빌드 파일(build.gradle 또는 build.gradle.kts)은 빌드 구성, 태스크, 플러그인에 대한 세부 정보를 포함합니다.
빌드 스크립트 기본
빌드 스크립트는 Groovy로 작성된 build.gradle 파일이거나 Kotlin으로 작성된 build.gradle.kts 파일입니다. Groovy DSL과 Kotlin DSL은 Gradle 스크립트에서 허용되는 유일한 언어입니다.
멀티 프로젝트 빌드에서는 각 서브프로젝트가 일반적으로 루트 디렉토리에 위치한 자체 빌드 파일을 가지고 있습니다.
빌드 스크립트 내에서는 일반적으로 다음을 지정합니다:
- 플러그인: 코드 컴파일, 테스트 실행, 아티팩트 패키징과 같은 태스크를 위해 Gradle의 기능을 확장하는 도구
- 의존성: 프로젝트에서 사용하는 외부 라이브러리 및 도구
예제로 살펴보기
간단한 예제를 통해 빌드 파일의 구조를 살펴보겠습니다:
plugins { // 1. 플러그인 추가
// Java CLI 애플리케이션 빌드를 지원하기 위해 애플리케이션 플러그인 적용
id 'application'
}
dependencies { // 2. 의존성 추가
// 테스트에 JUnit Jupiter 사용
testImplementation libs.junit.jupiter
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// 이 의존성은 애플리케이션에서 사용
implementation libs.guava
}
application { // 3. 컨벤션 속성 사용
// 애플리케이션의 메인 클래스 정의
mainClass = 'org.example.App'
}
1. 플러그인 추가
플러그인은 Gradle의 기능을 확장하고 프로젝트에 태스크를 기여할 수 있습니다. 플러그인을 빌드에 추가하는 것을 플러그인 '적용(applying)'이라고 하며, 추가 기능을 사용할 수 있게 합니다.
plugins {
// Java CLI 애플리케이션 빌드를 지원하기 위해 애플리케이션 플러그인 적용
id 'application'
}
application 플러그인은 실행 가능한 JVM 애플리케이션 생성을 용이하게 합니다. 또한 자동으로 java 플러그인도 적용되어 Java 컴파일, 테스트, 번들링 기능이 프로젝트에 추가됩니다.
2. 의존성 추가
프로젝트는 컴파일, 실행 및 테스트를 위해 외부 라이브러리가 필요합니다.
dependencies {
// 테스트에 JUnit Jupiter 사용
testImplementation libs.junit.jupiter
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// 이 의존성은 애플리케이션에서 사용
implementation libs.guava
}
이 예제에서 프로젝트는 테스트를 위해 JUnit Jupiter를 사용하고, 메인 애플리케이션 코드에서는 Google의 Guava 라이브러리를 사용합니다.
3. 컨벤션 속성 사용
플러그인은 프로젝트에 태스크를 추가합니다. 또한 프로젝트에 속성과 메서드도 추가합니다.
application {
// 애플리케이션의 메인 클래스 정의
mainClass = 'org.example.App'
}
application 플러그인은 애플리케이션을 패키징하고 배포하는 태스크를 정의합니다(예: run 태스크). 애플리케이션 플러그인은 코드 실행에 필요한 Java 애플리케이션의 메인 클래스를 선언하는 방법을 제공합니다.
결론
오늘은 Gradle 명령줄 인터페이스의 기본 사용법과 빌드 파일 작성법에 대해 알아보았습니다. 이러한 기본 지식은 Gradle로 프로젝트를 효과적으로 관리하는 데 필수적입니다.
#Gradle #BuildScripts #CLI #BuildAutomation #JavaDevelopment #KotlinDSL #GroovyDSL #DependencyManagement #GradleTasks #GradlePlugins