Spring启动,环境特定的属性位置

时间:2016-08-12 13:23:46

标签: java maven properties spring-boot

我可以看到很多关于环境特定属性的帖子,但是没有一个帖子能解决我的问题。

我正在开发我的春季启动应用程序,它会说两个配置文件dev / live。

我希望我的项目具有以下结构:

--deployment
  --dev
    --myapp.properties
  --live
    --myapp.properties
--src
  --main
    --java
    --resources
  --test
    --java

我知道如果我的资源文件夹中有两个application.properties,请说application-live.propertiesapplication-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在目前的位置找到它?

非常感谢!

1 个答案:

答案 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章节中找到更多信息。