Spring Bootでapplication.properties(yml)を環境によって分ける方法

Spring Bootでapplication.properties(yml)を環境によって分ける方法

アプリケーションの設定ファイルであるapplication.propertiesを環境によって分けることができます。

src/main/resources/配下にapplication.properties(yml)がありますが、その中にdev環境ならapplication-dev.properties,it環境ならapplication-it.propertiesをアクティブにする、といったことができます。

application.properties内で以下を記述します。(spring.profiles.active)

spring:
profiles:
active: dev #devがアクティブになる

view raw
build.gradle
hosted with ❤ by GitHub

これでapplication-dev.properties(yml)、application-it.properties(yml)の両方があってもapplication-dev.properties(yml)ファイルが読み込まれるようになります。

タスクに引数を渡して各環境にデプロイする

各環境にデプロイする(jar,war作成)際にapplication.ymlファイルを開いて、dev,local,test等変更する必要があります。

これは面倒なので、引数を渡してant.replaceregexpで該当箇所を置換したいと思います。

build.gradleにdef getEnv()とtask replaceYml()を追加します。

plugins {
id 'java-library'
}
repositories {
jcenter()
}
dependencies {
api 'org.apache.commons:commons-math3:3.6.1'
implementation 'com.google.guava:guava:26.0-jre'
testImplementation 'junit:junit:4.12'
}
def getEnv() {
String d = System.getProperty('env')
return d;
}
task replaceYml() {
ant.replaceregexp(file: "src/main/resources/application.yml", match: "^.*active:\\s+(.*)", replace: " active: " + getEnv(), byline: "true", encoding: "UTF-8")
}

view raw
build.gradle
hosted with ❤ by GitHub

Gradleタスクビューから「assemble」を右クリックし、「Gradle実行構成を開く」をクリックします。「Gradleタスク」欄を以下のように設定します。

Spring Bootでapplication.properties(yml)を環境によって分ける方法 ※複数タスク実行する場合は半角スペース空けて指定

「プロジェクト設定」タブで引数を指定します。

Spring Bootでapplication.properties(yml)を環境によって分ける方法

envにtestという変数を指定しました。

これでassembleをすると、spring.profiles.activeがtestに変わってjarやwarファイルが作成されるようになり、自動でapplication.ymlのファイル内が変更されます。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA