2023. 3. 18. 22:24ㆍBuild Tools/Gradle
The Gradle build language
Gradle은 DSL을 제공한다.이 빌드 언어는 Groovy와 Kotlin으로 사용할 수 있다. Gradle은 각 빌드 스크립트를 UTF-8로 인코딩한 결과를 평가한다.
The Project API
빌드 스크립트는 프로젝트 를 구성하여 빌드를 설명한다 . 프로젝트는 추상적인 개념이지만 일반적으로 Gradle 프로젝트를 라이브러리나 애플리케이션과 같이 빌드해야 하는 소프트웨어 구성 요소에 매핑한다. 가지고 있는 각 빌드 스크립트는 Project 유형의 개체와 연결되며 빌드 스크립트가 실행될 때 이 Project
를 구성합니다 .
실제로 빌드 스크립트의 거의 모든 최상위 프로퍼티와 블록은 Project API에 포함되어 있다.
println name
println project.name
gradle -q
의 실행 결과
app
app
println은 같은 프로퍼티를 출력한다. 첫 번째는 Project
객체의 name
프로퍼티를 참조하는 최상위 레벨을 사용한다. 다른 줄은 Project 객체와 연관된 Project 객체를 반환하는 모든 빌드 스크립트에서 사용할 수 있는 속성을 사용한다. Project
객체의 멤버로써 같은 이름을 사용하는 프로퍼티나 메서드를 정의하고 싶다면 project
프로퍼티를 사용해야 한다.
표준 project 프로퍼티
이름 | 타입 | 기본값 |
---|---|---|
project | Project | Project 인스턴스 |
name | String | 프로젝트 디렉터리의 이름 |
path | String | 프로젝트의 절대 경로 |
description | String | 프로젝트의 설명 |
projectDir | File | 빌드 스크립트를 포함하는 디렉터리 |
buildDir | File | projectDir/build |
group | Object | unspecified |
version | Object | unspecified |
ant | AntBuilder | AntBuilder 인스턴스 |
변수 선언
지역 변수
def dest = 'dest'
tasks.register('copy', Copy) {
from 'source'
into dest
}
부가 프로퍼티
Gradle 도메인 모델의 모든 향상된 객체는 부가적인 사용자 정의 프로퍼티를 가질 수 있다. 이는 단지 projects, tasks, sourceSets에 제한되지 않는다.
부가 프로퍼티는 객체가 소유한 ext
프로퍼티를 통해 추가되고, 읽고 설정할 수 있다. 또는 ext
블록을 사용하여 한 번에 여러 프로퍼티를 추가할 수 있다.
plugins {
id 'java-library'
}
// project 객체의 부가 프로퍼티 추가
ext {
springVersion = "3.1.0.RELEASE"
emailNotification = "build@master.org"
}
sourceSets.all { ext.purpose = null }
sourceSets {
main {
purpose = "production"
}
test {
purpose = "test"
}
plugin {
purpose = "production"
}
}
tasks.register('printProperties') {
doLast {
println springVersion
println emailNotification
sourceSets.matching { it.purpose == "production" }.each { println it.name }
}
}
gradle -q printProperties
의 실행 결과
3.1.0.RELEASE
build@master.org
main
plugin
Configuring arbitrary objects
임의적인 객체를 구성할 수도 있다.
import java.text.FieldPosition
tasks.register('configure') {
doLast {
def pos = configure(new FieldPosition(10)) {
beginIndex = 1
endIndex = 5
}
println pos.beginIndex
println pos.endIndex
}
}
gradle -q configure
의 실행 결과
1
5
⚠️ 이 기능은 현재 Groovy 스크립트에서만 지원하며 Kotlin DSL에선 지원하지 않는다.
'Build Tools > Gradle' 카테고리의 다른 글
[Gradle] Windows에서 Intellij 프로젝트에서 Test 시 발생할 수 있는 오류 (0) | 2023.03.20 |
---|---|
[Gradle] 빌드 스크립트 기본 (0) | 2023.03.18 |
[Gradle] Gradle 디렉터리 구조 (0) | 2023.03.18 |
[Gradle] 빌드 생명 주기 (0) | 2023.03.18 |
[Gradle] Gradle 기초 (0) | 2021.10.12 |