본문 바로가기

Build/Gradle

Gradle 도큐먼트: 환경 변수(Environment variables)를 사용한 빌드 환경 구성

더보기

Gradle 동작 또는 특정 Gradle 프로젝트에서의 환경 설정을 구성 할 수 있는 여러 가지 메커니즘을 제공합니다.

Gradle의 동작을 구성할 때는 각 메커니즘의 우선 순위가 높은 것(오름차순)이 먼저 결정됩니다.

우선 순위 구분 비고 예시
1 Command-line flags 프로퍼티(Properties)와 환경 변수(Envrionment variables)보다 앞서는 규칙입니다.
자세한 내용은 Gradle document: Command-Line Interface를 참고합니다.
--build-cache
2 System properties 루트 프로젝트 디렉토리의 gradle.properties 파일로 관리됩니다. systemProp.http.proxyHost=somehost.org
3 Gradle properties 프로젝트 디렉토리 또는 GRADLE_USER_HOME 디렉토리의
gradle.properties 파일로 관리됩니다.
org.gradle.caching=true
4 Environment variables Gradle을 실행하는 환경에서 제공합니다. GRADLE_OPTS

Configuration 시간에 환경 변수 읽기

gradle 명령문을 사용해 다음 환경 변수를 설정 할 수 있습니다.

구분 비고
GRADLE_HOME Gradle 설치 디렉토리 경로입니다.
Gradle Wrapper를 사용하는 대신 로컬 Gradle 버전을 지정하기 위해 사용합니다.
JAVA_OPTS JVM 옵션과 사용자 지정을 JVM에 전달합니다.
GRADLE_OPTS Gradle 클라이언트 VM을 시작할때 사용할 JVM 인자를 지정합니다.
클라이언트 VM은 명령줄의 I/O만 처리하므로 VM 옵션을 변경하는 일은 흔치 않습니다.
실제 빌드는 Gradle 데몬으로 실행되며 이 환경 변수에 영향을 받지 않습니다.
GRADLE_USER_HOME GRADLE_USER_HOME 디렉토리 경로를 지정합니다.
지정된 디렉토리에서는 Gradle의 전역 설정, 초기화 스크립트, 캐시, 로그 파일 등을 저장합니다.
JAVA_HOME Gradle 클라이언트 VM에서 사용할 JDK 설치 디렉토리 경로를 지정합니다.

init.gradle.kts 파일에서 Configuration 시간에 환경 변수를 읽어옵니다.

println(System.getenv("ENVIRONMENTAL"))

settings.gradle.kts 파일에서 Configuration 시간에 환경 변수를 읽어옵니다.

// Using the Java API
println(System.getenv("ENVIRONMENTAL"))

// Using the Gradle API, provides a lazy Provider<String>
println(providers.environmentVariable("ENVIRONMENTAL").get())

build.gradle.kts 파일에서 Configuration 시간에 환경 변수를 읽어옵니다.

// Using the Java API
println(System.getenv("ENVIRONMENTAL"))

// Using the Gradle API, provides a lazy Provider<String>
println(providers.environmentVariable("ENVIRONMENTAL").get())

Runtime에 환경 변수 읽기

build.gradle.kts 파일에서 Runtime에 환경 변수를 읽어옵니다.

tasks.register<PrintValue>("printValue") {
    // Using the Gradle API, provides a lazy Provider<String> wired to a task input
    inputValue = providers.environmentVariable("ENVIRONMENTAL")
}

정리 및 복습

  • gradle 명령문을 사용해 환경 변수(Environment variables)를 설정 할 수 있습니다.
  • 사용 할 수 있는 환경 변수는 GRADLE_HOME JAVA_OPTS GRADLE_OPTS GRADLE_USER_HOME JAVA_HOME입니다.
  • 환경 변수는 Configuration 시간 또는 Runtime에 읽을 수 있습니다.