ローカルでプロファイルを指定して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の書き換えせずに済むので、集中できる
設定
- 「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") } }
- gradleにパラメータを付与して起動する
./gradlew bootRun -Pprofiles=local
終わりに
職場では既にこの設定が行われた状態で渡されたので、自宅での検証に時間をかけてしまいました。
正直、ユースケースを考えるといい例が思い浮かばないのですが、ほぼ無意識で使っていたことから使えるテクニックのはずです…。
導入も難しくないので、ぜひ使ってみてください。
この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。