是否可以有多个application.properties文件?( 编辑 :请注意,此问题演变为标题上的问题。)
我试图有2个文件。
2个文件都命名为“ application.properties”。
是否可以“合并”两个文件的内容?(第二个属性的值会覆盖第一个属性的值)或者,如果我有一个文件,则另一个文件会被忽略吗?
更新1 :可以“合并”内容。昨天似乎第一个被忽略了,但这似乎是因为那时有些问题。现在它运作良好。
更新2 :又回来了!同样,仅应用两个文件之一。奇怪了…它是在我使用Spring Tool Suite构建了app jar文件之后开始的。而且,Jar版本似乎总是忽略第二个版本(在类路径中),而在STS上运行的扩展版本的行为却有所不同。我可以从哪里开始调查?
更新3 :
Jar版本的行为实际上是正确的。这是java.exe的规范。当指定-jar选项时,java.exe将同时忽略- classpath选项和CLASSPATH环境变量,并且classpath将仅包含jar文件。因此,将忽略类路径上的第二个application.properties文件。
现在,如何加载类路径上的第二个application.properties?
更新4 :
使用-jar选项时,我设法在外部路径中加载了application.properties文件。
关键是PropertiesLauncher。
要使用PropertiesLauncher,必须按以下方式更改pom.xml文件:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- added --> <layout>ZIP</layout> <!-- to use PropertiesLaunchar --> </configuration> </plugin> </plugins> </build>
构建jar文件之后,通过检查jar中META-INF / MENIFEST.MF中的Main-Class属性,可以看到使用了PropertiesLauncher。
现在,我可以按以下方式运行jar(在Windows中):
java -Dloader.path=file:///C:/My/External/Dir,MyApp-0.0.1-SNAPSHOT.jar -jar MyApp-0.0.1-SNAPSHOT.jar
请注意,应用程序jar文件包含在loader.path中。
现在,已加载C:\ My \ External \ Dir \ config中的application.properties文件。
另外,Jar也可以访问该目录中的任何文件(例如,静态html文件),因为它位于加载程序路径中。
至于UPDATE 2中提到的非jar(扩展)版本,可能存在类路径顺序问题。
(顺便说一句,我更改了该问题的标题,使其更加针对此问题。)
构建jar文件之后,通过检查jar中META-INF / MENIFEST.MF中的Main- Class属性,可以看到使用了PropertiesLauncher。