Spring Bootのアプリケーションがあります。
私は私のアプリケーション - >開発、ステージングそしてプロダクションに3つのプロファイルを持っています。だから私は3ファイルがあります
私のapplication.ymlはsrc/main/resources
の中にあります。私はapplication.ymlでアクティブプロファイルを次のように設定しました。
spring:
profiles.active: development
他の3つのプロファイル固有の設定ファイルはC:\config
フォルダーにあります。
私はEclipse用のgradleプラグインを使用しています。 "bootRun"を実行しようとすると、Eclipseのgradle設定でコマンドライン引数を次のように設定します。
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
しかしながら、コマンドラインプロパティは反映されておらず、私のアクティブプロファイルは常にdevelopmentとして設定されています(これは私がapplications.ymlファイルで述べたものです)。 C:\ Configフォルダもプロファイル固有の設定ファイルを検索しません。
私はここで何かが足りないと思います。私は過去2日間それを把握しようとしています。しかし、運はありません。どうぞよろしくお願いします。
私はこれを追加しなければなりませんでした:
bootRun {
String activeProfile = System.properties['spring.profiles.active']
String confLoc = System.properties['spring.config.location']
systemProperty "spring.profiles.active", activeProfile
systemProperty "spring.config.location", "file:$confLoc"
}
そして今bootRunはプロファイルと設定の場所を選びます。
ポインタをどうもありがとう。
コマンドラインでスプリングプロパティを追加/上書きする方法は2つあります。
-Dパラメータはapplication.jarより前にあることが重要です。そうしないと、認識されません。
Java -jar -Dspring.profiles.active=prod application.jar
Java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
正しくありません。
する必要があります:
--spring.profiles.active=staging --spring.config.location=C:\Config
次のコマンドラインを使用できます。
Java -jar -Dspring.profiles.active=[yourProfileName] target/[yourJar].jar
OS変数、SPRING_PROFILES_ACTIVEを設定する方法もあります。
例えば:
SPRING_PROFILES_ACTIVE=dev gradle clean bootRun
Mavenプラグインでプロファイルを設定するときはrun.jvmArguments
経由でそれをしなければなりません
mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"
デバッグオプション付き
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Dspring.profiles.active=jpa"
私はこの旅行をたくさんの人に見かけました。
あなたの問題はおそらく "/"で終わっていないあなたのspring.config.locationに関連していると思います。
ドキュメントを引用する
Spring.config.locationに(ファイルではなく)ディレクトリが含まれる場合、それらは/で終わる必要があります(そしてロードされる前にspring.config.nameから生成された名前が追加されます)。
Michael Yinの答えは正しいですが、もっと良い説明が必要と思われます!
多くの人が、-D
がJVMパラメータを指定する正しい方法であると言っていましたが、その通りです。しかし、Michaelは Spring Boot Profiles のドキュメントで述べられているように正しいです。
--spring.profiles.active
は標準のJVMパラメータではないので、IDEで使用する場合は正しいフィールド(プログラム引数)を入力してください。
私のベストプラクティスはこれをVM "-D"引数として定義することです。スプリングブーツ1.xと2.xの違いに注意してください。
有効にするプロファイルは、コマンドラインで指定できます。
春2.x
-Dspring-boot.run.profiles=local
春1.x
-Dspring.profiles.active=local
Mavenでの使用例:
春2.x
mvn spring-boot:run -Dspring-boot.run.profiles=local
春1.x
mvn spring-boot:run -Dspring.profiles.active=local
複数のプロファイルの場合は、必ずカンマで区切ってください。
mvn spring-boot:run -Dspring.profiles.active=local,foo,bar
mvn spring-boot:run -Dspring-boot.run.profiles=local,foo,bar