我可以看到很多关于环境特定属性的帖子,但是没有一个帖子能解决我的问题。
我正在开发我的春季启动应用程序,它会说两个配置文件dev / live。
我希望我的项目具有以下结构:
--deployment
--dev
--myapp.properties
--live
--myapp.properties
--src
--main
--java
--resources
--test
--java
我知道如果我的资源文件夹中有两个application.properties
,请说application-live.properties
和application-dev.properties
我可以告诉maven在应用程序启动时选择哪一个使用:
Dspring.profiles.active=profile_name
但我不喜欢这个通用属性文件的名称。所以我找到了这种方式告诉应用程序在/deployment/<profile>/
中查找配置文件特定属性的位置。
我是使用Maven构建任务配置完成的:
<build>
<resources>
<resource>
<directory>deployment/${environment}</directory>
<includes>
<include>*.properties</include>
<include>*.xml</include>
</includes>
</resource>
</resources>
</build>
这将搜索deployment/<profile>
中的资源并包含它们。好的是,Maven找到了正确的环境属性文件,但不幸的是它包含在target/classes/myapp.properties
中,这对于Spring Boot来说似乎是不可见的?如何告诉Maven将它放在与application.properties
相同的目录中,或者我如何告诉Spring Boot在目前的位置找到它?
非常感谢!
答案 0 :(得分:0)
我如何告诉Maven将它放在与application.properties相同的目录中,如何告诉Spring Boot在目前的位置找到它?
1)您不需要修改Maven设置,因为它将配置文件放在正确的位置:target/classes
是类路径的根,因为此目录中的所有文件都将复制到{{ 1}} WAR / JAR文件的目录。
2)要更改属性文件的名称,可以使用WEB-INF/classes
属性将其显式传递为spring.config.name
或环境变量-Dspring.config.name=myapp
。您可以在官方文档的Change the location of external properties of an application章节中找到更多信息。