Gradle では -D
オプションでシステム環境変数を設定できる。
./gradlew run -Denv=dev
しかしこのように設定した環境変数は、Gradle には渡るが、そこから起動するアプリケーション側には渡らない。
ビルドスクリプト内で systemProperty
に明示的に設定する必要がある。
tasks.run.configure { systemProperty("env", System.getProperty("env")) }
systemProperty
に設定することでアプリケーション側で、システム環境変数として取得できる。
var env = System.getProperty("env", "undef");
全ての環境変数をアプリケーション側に渡す場合は以下のようにすることができる。
tasks.run.configure { systemProperties(System.getProperties().toMap() as Map<String,Object>) }
Gradle では -P
オプションのプロジェクト環境変数を使うことも多い。
./gradlew run -Penv=dev
プロジェクト環境変数をアプリケーション側のシステム環境変数に渡す場合は以下のようになる。
tasks.run.configure { systemProperty("env", project.properties["env"]) }
なお、-Dorg.gradle.project
を付けることで、-D
オプションでプロジェクト環境変数を渡すこともできる。
./gradlew run -Dorg.gradle.project.env=stg
コマンドラインからではなく、gradle.properties
に定義することもできる。
# システム環境変数 systemProp.pts.enabled=true systemProp.file.encoding = UTF-8 # プロジェクト環境変数 kotlin.code.style=official spring-boot.version = 2.2.1.RELEASE