スタートアップ クラスとして WarLauncher (Spring ブート ローダーの一部) を指定して、実行可能な war ファイルを作成しました。すべての構成ファイル (プロパティ、Spring コンテキストなど) がリソース フォルダーの一部である場合、正常に動作します。私は、私の戦争の消費者がプロパティファイルの制御を必要とすることを期待しています. したがって、war ファイルの外にロードする必要があります。プロパティ ファイルが config フォルダーにあることを期待しています (war ファイルと並行してデプロイされます)。Maven プラグインを使用して適切なクラスパス エントリをマニフェストに追加しようとしましたが、うまくいきませんでした。
以下は、私のmaven POMファイルの関連セクションがどのように見えるかです:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.springframework.boot.loader.WarLauncher</mainClass>
</manifest>
<manifestEntries>
<Start-Class><<myclass_dont_worry_about_this>></Start-Class>
<Class-Path>config/</Class-Path>
</manifestEntries>
</archive>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
プロパティ ファイルの読み込みに Spring ClassPathResource() を使用しています。以下は、同じコード スニペットを示しています。
InputStream stream = new ClassPathResource(classPathConfigFilePath).getInputStream();
Proerties properties = new Properties();
properties.load(stream);
実行時にプロパティ ファイルを見つけることができず、FileNotFoundException が発生します。
ありがとう。