目的
- 未公開記事の発掘
- これ少し役に立った記憶がある
- testcontainersで起動したRDBの接続情報を起動時に調整するなどした
前提
課題
解決方法
- 環境変数をいい感じに解決するため dotenv-gradle を利用する
test
タスクへ環境変数を渡すためenvironment
プロパティを指定する
ファイルレイアウトはこういう感じになります。
./build.gradle
./settings.gradle
./src/main/java/xxxx
./src/test/java/xxxx
./.env
.env
ファイルの内容は次のような感じです。
DOCKER_CERT_PATH=C:/Users/path/to/docker/certs DOCKER_TLS_VERIFY=1 DOCKER_HOST=tcp://dockerhost:2376
最終的な build.gradle
は次のような感じになります。
plugins { id 'java' id 'co.uzzu.dotenv.gradle' version '1.1.0' // プラグインの追加 } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = JavaVersion.VERSION_11 repositories { mavenCentral() } dependencies { testImplementation('org.junit.jupiter:junit-jupiter-api:5.3.1') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.3.1') testImplementation('org.testcontainers:junit-jupiter:1.14.3') testImplementation('org.testcontainers:postgresql:1.14.3') } test { useJUnitPlatform() // environment で指定した環境変数だけになるので、System.getenv() も指定しないとおかしなことになる environment = System.getenv() + [ 'DOCKER_HOST' : env.fetch('DOCKER_HOST', 'unix:///var/run/docker.sock'), 'DOCKER_TLS_VERIFY': env.fetch('DOCKER_TLS_VERIFY', ''), 'DOCKER_CERT_PATH' : env.fetch('DOCKER_CERT_PATH', ''), ] }