web-dev-qa-db-ja.com

IntelliJから実行しているときにSpring Bootプロファイルをアクティブにする方法を教えてください。

私は5つの環境があります。

 - local (my development machine)
 - dev
 - qc
 - uat
 - live
 - staging

環境ごとに異なるアプリケーションプロパティを使用する必要があるので、データソースのURLがそれぞれ異なる次のプロパティファイルを用意します。

 - application.properties  (containing common properties)
 - application-local.properties
 - application-dev.properties
 - application-qc.properties
 - application-uat.properties
 - application-live.properties

私はIntelliJを使っていて、自分のローカルマシンのGradleプラグインの中のbootRunを使ってアプリを実行しています。 Tomcatを実行する他のすべての環境で同じアプリケーションwarファイルをデプロイすることを使用します。

私は追加してみました:

--spring.profiles.active = local

スクリプトパラメータの下で実行設定に。

追加してみた

-Dspring.profiles.active = local

VM optionsの下の実行構成に。

どちらも動きません。起動時にINFOメッセージが表示され続けます。アクティブなプロファイルが設定されていないため、デフォルトのプロファイルに戻ります。default

Windowsのコマンドラインからアプリを実行した場合

gradle bootRun

最初に環境変数を設定しました

set SPRING_PROFILES_ACTIVE=local

それからすべてがうまくいきます。

だから私の質問は、IntelliJからbootRunを実行するときどのように私は私のローカルスプリングブートプロファイルをアクティブにするのですか?

76
dleerob

設定の編集に入りました...

VM Optionsに-Dspring.profiles.active=testを追加してから、その設定を再実行しました。それは完璧に機能しました。

102
Thom

実際にSpring Bootの実行設定(現在Ultimate Editionでのみサポートされています)を利用するのであれば、 "Active Profiles"設定でプロファイルを事前設定するのは簡単です。

enter image description here

63

私はbuild.gradleに以下を追加しました。

bootRun {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local"
}

test {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test"
}

そのため、IntelliJからbootRunを実行すると、デフォルトで "local"プロファイルが使用されます。

その他の環境では、Tomcatで単に 'SPRING_PROFILES_ACTIVE'環境変数を設定します。

私はここで見つけたコメントからこれを得ました: https://github.com/spring-projects/spring-boot/pull/592

6
dleerob

考えられる原因は、コマンドラインパラメータをアプリケーションのmainメソッドに渡さないことです。私は数週間前に同じ間違いをしました。

public static final void main(String... args) {
    SpringApplication.run(Application.class, args);
}
5

私はIntellij Community Editionを使います。 [実行/デバッグ構成]> [ランナー]タブ> [環境変数]> [...]ボタンをクリックします。追加:SPRING_PROFILES_ACTIVE = local

spring.profiles.active

2
Ryan Wibawa

あなたのbuild.gradleにこのコマンドを追加してみてください

enter image description here

それで、実行するためにその形状を設定してください:

enter image description here

2
emerson moura

Spring Bootは、進化するにつれてVMオプションの読み方を変えたようです。これは、Intellijでアプリケーションを起動して何らかのプロファイルをアクティブにしたいときに試す方法です。

1. VMオプションを変更します

[ファイル名を指定して実行]で[設定の編集]を開き、[VMオプション]に次の行を追加します。-Dspring.profiles.active=local

それは実際にはSpring Boot v2.0.3.RELEASESpring v5.0.7.RELEASEを持つ私の1つのプロジェクトで動作しますが、Spring Boot v2.1.1.RELEASESpring v5.1.3.RELEASEを持つ別のプロジェクトでは動作しません。

また、MavenまたはJARを使って実行しているとき、人々はこれを述べました:

mvn spring-boot:run -Drun.profiles=dev

または

Java -jar -Dspring.profiles.active=dev XXX.jar

(こちらを参照してください。 Spring Bootプロファイルの使い方

2. JVM引数を渡す

JVMのオプションを指定すると、Springはアプリケーションのプロセスを起動する方法を変更すると、どこかで言及されています。これは別のプロセスをフォークし、受け取った引数を渡さないため、これは機能しません。引数を渡す唯一の方法は、次のとおりです。

mvn spring-boot:run -Dspring-boot.run.jvmArguments="..."

繰り返しますが、これはMaven用です。 https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html

3.設定(アプリケーション)env var

2番目のプロジェクトで私にはたらくのは、上記の答えで述べたように、環境変数を設定することでした: "設定の編集" - "環境変数"、そして:

spring.profiles.active=local
1
WesternGun

Spring Boot 2.1. 以降では使用できます

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

0
Mr. K.

これを試して。次のようにbuild.gradleファイルを編集します。

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' }
0
sudoz

Replace your profile name with BE

上記の方法でプロファイルを有効化できます

0
Amrit Malla