我通过将 WarLauncher(spring boot loader 的一部分)指定为我的启动类来创建一个可执行的 war 文件。当所有配置文件(属性、弹簧上下文等)都是我的资源文件夹的一部分时,它工作正常。我希望我的战争消费者需要控制属性文件。因此它需要在war文件之外加载。我期待配置文件夹中的属性文件(与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 的属性文件。
谢谢。