使用 maven 构建时选择弹簧配置文件
Posted
技术标签:
【中文标题】使用 maven 构建时选择弹簧配置文件【英文标题】:Choosing spring profile when building with maven 【发布时间】:2019-02-06 04:11:10 【问题描述】:我正在尝试为我的生产环境创建构建。在我的 Spring Web 应用程序中,我有 4 个 .yml 文件
-
application.yml
application-development.yml
application-staging.yml
application-production.yml
在application.yml文件中,我指定了
spring:
profiles:
active: production
我使用 maven 创建构建的命令是
mvn clean install tomcat7:deploy -B -Pproduction
在我的目标文件夹中,我可以看到所有属性和我的生产设置都没有出现。
我得到的是我的默认 application.yml 属性。如何正确构建?
【问题讨论】:
您不应该为环境创建特定的构建。您传递了 1 个构建。在启动应用程序时,您指定要激活的配置文件。 考虑查看 spring-cloud-config 以轻松管理每个环境的特定配置。 @M.Deinum 在我的 tomcat $TOMCAT_HOME/bin/setenv.sh 我添加了这个选项 export CATALINA_OPTS="$CATALINA_OPTS -Dspring.profiles.active=production 但它也不起作用。我是将战争转移到已经运行的 tomcat 实例。我需要做任何额外的事情吗? 【参考方案1】:在你的application.yml中,添加如下:
spring:
profiles:
active: @active-profiles@
那就试试吧:
mvn clean install tomcat7:deploy -B -P production
在 pom.xml 中(maven 配置文件在 mvn 命令期间传递 - production 配置文件找到属性并用 spring-boot 替换 application.yaml
中的属性-maven-plugin 内置在 spring-boot-starter-parent)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
<relativePath />
</parent>
.
.//Dependencies go here
.
<profiles>
<profile>
<id>production</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<active-profiles>production</active-profiles>
</properties>
</profile>
</profiles>
更多信息在这里:
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html
http://dolszewski.com/spring/spring-boot-properties-per-maven-profile/
Maven resource filtering not working - because of spring boot dependency
【讨论】:
无法添加活动:@active.profiles@.it 显示错误 我添加了更详细的答案。我假设您已经配置了 Maven 配置文件。看看这个以了解更多:***.com/questions/36501017/…以上是关于使用 maven 构建时选择弹簧配置文件的主要内容,如果未能解决你的问题,请参考以下文章