0

spring-bootアプリケーションをビルドすると、私たちはクラスパス上にハードコードされたファイル名(xyz.propertiesなど)のプロパティファイルを見つけようとしているサードパーティのjarファイル に依存しています。 。spring-boot:ハードコードされたファイル名を持つプロパティファイルの異なるバージョンを設定していますか?

しかし、私たちがjarファイルをどの環境に配備しているかに応じて、このプロパティファイルの別のバージョンを "入れ替える"必要があります。 クラスパスにjarファイルの外部にディレクトリを追加する必要があります。そこにはproperties-fileを置くことができます。

これを検索すると、同様の問題を抱えている他の人が見つけられますが、 は単純でクリーンな解決策ではありません。 私のように、スプリングプロパティモデルでは、プロパティ名とその値を (System.getProperties()から取り出して) を気にかけているだけで、各値がどのプロパティファイルから来るのかを気にしないと仮定しています。

このモデルに沿って独自のコードを作成する場合は、 という具合にはうまくいくかもしれませんが、私たちのユースケースのようなサードパーティのソリューションに依存する場合はあまり適していません。私が見つけた最も簡単な回避策は春のjarファイルを「爆発」することです

、 は、 が、その後JarLauncherで始まり、WEB-INF /クラスに所望の特性、ファイルをコピーします。

"爆発"する必要なく、より良い方法があるかどうか疑問に思っていますか?

私の理解は間違っていますか、すでにこのユースケースをサポートしている春の機能を見落としていますか?

java -cp "./conf/:yourBoot.jar" org.springframework.boot.loader.JarLauncher 

と(すでに示唆したように)、あなたは、外部ディレクトリで、あなたの設定を置くことができますが、いくつかのトリックをあなた自身のクラスパスを設定することができます -

答えて

1

がうまくいけば、それはまだ動作します。 sodik @Add jar file to spring-boot classpath at runtime

+0

----うーん、はい、もちろん....なぜdidntは私が考える?? !!:

は、元の質問を参照してください。 :D ----それはショットを与える! – Rop

+0

うまく働いた、ありがとう! :) ----クリーンでシンプルなソリューション--- spring-docのオプションとして実際に追加する必要があります:https://docs.spring.io/spring-boot/docs/current/reference/html/boot- features-external-config.html – Rop

関連する問題