きり丸の技術日記

技術・エンジニアのイベント・資格等はこちらにまとめる予定です

gradleでのbootRun時にプロファイルを指定できるようにする

ローカルでプロファイルを指定してbootRunすることはあまりありませんが、地味に便利だったので記事にします。

なお、bootRunタスクに限らず他のタスクでも使用できます。

環境

  • gradle
    • 6.7
  • Java
    • 11
  • Spring Boot
    • 2.3.5 RELEASE

ゴール

gradleのbootRun時のオプションで、プロファイルを指定できるようにする。

./gradlew bootRun -Pprofiles=local

ユースケース

  • 複数プロファイルを読み込んだときの挙動を確認したい
    • 起動プロファイルの指定で「local,mock」としたときに、mockが優先されることをローカルで確認する等
  • オンプレのAPサーバが払い出される前に、ポートフォワードしてローカルから既に存在するDBサーバにアクセスしたい
    • YAMLの書き換えせずに済むので、集中できる

設定

  1. 「build.gradle」ファイルにbootRunタスクを追加します。

gradleの起動時に「-Phoge=xxx」を指定するとパラメータを渡すことができます。

下記設定は、「profiles」というキーをが存在するとき、jvm起動パラメータとして「-Dspring.profiles.active=」にprofilesの値を渡しています。

bootRun {
    // -Pprofiles=prdで起動できるようにする
    if (project.properties.containsKey("profiles")){
        jvmArgs += '-Dspring.profiles.active='+ project.properties.get("profiles")
    }
}
  1. gradleにパラメータを付与して起動する
./gradlew bootRun -Pprofiles=local

終わりに

職場では既にこの設定が行われた状態で渡されたので、自宅での検証に時間をかけてしまいました。

正直、ユースケースを考えるといい例が思い浮かばないのですが、ほぼ無意識で使っていたことから使えるテクニックのはずです…。

導入も難しくないので、ぜひ使ってみてください。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

f:id:nainaistar:20201013111905p:plain