使用 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 构建时选择弹簧配置文件的主要内容,如果未能解决你的问题,请参考以下文章

当特定的弹簧配置文件处于活动状态时,如何防止运行测试?

Maven 配置文件属性不会覆盖弹簧配置中的值

如何使用 Maven 配置文件设置弹簧活动配置文件

仅在设置了特定的弹簧配置文件时才运行集成测试

弹簧靴总是使用相同的配置文件

弹簧配置文件和测试