Gradle 동작 또는 특정 Gradle 프로젝트에서의 환경 설정을 구성 할 수 있는 여러 가지 메커니즘을 제공합니다.
Gradle의 동작을 구성할 때는 각 메커니즘의 우선 순위가 높은 것(오름차순)이 먼저 결정됩니다.
우선 순위 | 구분 | 비고 | 예시 |
1 | Command-line flags | 프로퍼티(Properties)와 환경 변수(Envrionment variables)보다 앞서는 규칙입니다. 자세한 내용은 Gradle document: Command-Line Interface를 참고합니다. |
--build-cache |
2 | System properties | 루트 프로젝트 디렉토리의 |
systemProp.http.proxyHost=somehost.org |
3 | Gradle properties | 프로젝트 디렉토리 또는 |
org.gradle.caching=true |
4 | Environment variables | Gradle을 실행하는 환경에서 제공합니다. | GRADLE_OPTS |
프로퍼티(gradle.properties) 파일에서 시스템 프로퍼티 적용
gradle.properties 파일에서도 시스템 프로퍼티를 설정 할 수 있습니다. 시스템 프로퍼티는 systemProp 접두사로 시작합니다.
systemProp.gradle.wrapperUser=myuser
systemProp.gradle.wrapperPassword=mypassword
다중 프로젝트 빌드(Multi Project build)에서 루트 프로젝트를 제외한 모든 프로젝트의 systemProp 프로퍼티는 무시됩니다.
루트 프로젝트의 gradle.properties 파일만 systemProp 프로퍼티가 적용되므로 주의합니다.
gradle.properties 파일에 systemProp.system 프로퍼티를 추가합니다.
systemProp.system=gradlePropertiesValue
settings.gradle.kts 파일에 다음 코드를 추가하면 Configuration time에 시스템 프로퍼티를 읽을 수 있습니다.
// Using the Java API
println("Configuration time: " + System.getProperty("system"))
// Using the Gradle API, provides a lazy Provider<String>
println("Configuration time: " + providers.systemProperty("system").get())
Gradle 프로젝트 루트 디렉토리에서 ./gradlew build를 수행합니다.
$ ./gradlew build
Configuration time: gradlePropertiesValue
Configuration time: gradlePropertiesValue
...
BUILD SUCCESSFUL in 1s
7 actionable tasks: 4 executed, 3 up-to-date
Runtime에서 시스템 프로퍼티에 엑세스 할 수 있습니다. build.gradle.kts 파일을 다음과 같이 변경합니다.
tasks.named<Test>("test") {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
println("Runtime: " + providers.systemProperty("system").get())
}
Gradle 프로젝트 루트 디렉토리에서 ./gradlew test를 수행합니다.
./gradlew test
Configuration time: gradlePropertiesValue
Configuration time: gradlePropertiesValue
Runtime: gradlePropertiesValue
...
BUILD SUCCESSFUL in 712ms
3 actionable tasks: 3 up-to-date
명령줄(Command-Line)을 사용한 시스템 프로퍼티 적용
명렬줄 옵션 -D는 Gradle을 실행하는 JVM에 시스템 프로퍼티를 전달합니다. Gradle의 -D 옵션은 자바 명령문의 -D 옵션과 동일합니다.
$ ./gradlew test -Dsystem=commandLineValue
Configuration time: commandLineValue
Configuration time: commandLineValue
Runtime: commandLineValue
...
BUILD SUCCESSFUL in 906ms
3 actionable tasks: 3 up-to-date
gradle.properties에서 시스템 프로퍼티를 적용한 상태였다면 명령줄의 -D 옵션이 우선 적용되는 것을 알 수 있습니다.
정리 및 복습
시스템 프로퍼티(System properties)는프로퍼티 파일또는명령줄을 사용해서 입력 할 수 있습니다.- 프로퍼티 파일에 입력하려면
gradle.properties파일을 수정합니다. - 프로퍼티 파일에서 지정하는 시스템 프로퍼티는
systemProp접두사로 시작합니다.
systemProp.system=gradlePropertiesValue
- 명령줄을 사용해 입력하려면
-D옵션을 사용합니다.
$ ./gradlew test -Dsystem=commandLineValue
'Build > Gradle' 카테고리의 다른 글
Gradle 도큐먼트: 환경 변수(Environment variables)를 사용한 빌드 환경 구성 (0) | 2023.11.21 |
---|---|
Gradle 도큐먼트: Gradle 프로퍼티(Gradle properties)를 사용한 빌드 환경 구성 (0) | 2023.11.17 |
"Cannot add task 'wrapper' as a task with that name already exists" 오류 (0) | 2023.11.17 |
Gradle 도큐먼트: 빌드 최적화를 위한 로컬 빌드 캐시(Local build cache)와 원격 빌드 캐시(Remote build cache) (0) | 2023.11.16 |
Gradle 도큐먼트: 빌드 최적화를 위한 증분 빌드(Incremental build) (0) | 2023.11.16 |