Spring Boot Gradle Pluginの環境下でタスク実行時のSpringプロファイルを引数で設定する

Gradle環境下でSpringBootでのプロファイルを動的に指定できないかと考えていた際に、引数で選択できると便利そうだったので色々調べてみた。

その結果、数行のコードで達成できることが判明したのでここに残す。

bootRunの場合

以下のように--args=の後に引数を書くだけで良い。

gradlew bootRun --args="--spring.profiles.active=hogehoge"

bootRunの実行時は、デフォルトで引数を渡す方法が存在するらしい。

自作タスクの場合

bootRunでは上手くいくのに自作タスクではできないという状況に悩まされ数時間無駄にしてしまった。

結局のところ、自作タスクの場合はjvmに引数を渡す処理を書かなければいけないようだ。

gradlew hoge --Pargs="-Dspring.profiles.active=hogehoge"

build.gradleには次のように記述する。

task hoge {
    if (project.hasProperty("args")) {
        println args
        jvmArgs args //-Dspring.profiles.active=hogehogeを渡している
    }
}

参考にしたページ

qiita.com