Maven构建配置和激活SpringBoot配置文件

2022-09-21 09:49:08 浏览数 (1)

本文最后更新于 511 天前,其中的信息可能已经有所发展或是发生改变。

一、Maven配置里使用SpringBoot配置里的属性

代码语言:javascript复制
            <resource>
                <directory>src/main/resources/${profiles.active}</directory>
                <filtering>true</filtering>
                <includes>
                    <include>*.properties</include>
                    <include>*.xml</include>
                </includes>
            </resource>
  • maven里的<filtering>true</filtering>
    1. Spring EL表达式和MAVEN的占位符表达式长得一样,但两者默认进水不犯河水,不能再Spring的范围内取maven的参数
    2. filtering的作用就是打通两者的连接, 让井水犯河水, 具体来说是让Spring的范围内能取到maven的参数
    3. filtering的使用要配合resource一起使用: 前者开启打通连接,后者指定打通的范围.
  • 如果你的项目继承了spring-boot-starter-parent,如果想在application.properties中使用maven的占位符以获取maven的参数,此时就不能用${},因为可能会与EL表达式冲突,怎么办? 此时parent依赖将maven占位符表达式默认改为@var@的形式. 所以只能用@var@替代${var}

二、激活不同的profile

代码语言:javascript复制
    <profiles>
          <profile>
            <!--不同环境Profile的唯一id-->
              <id>dev</id>
              <properties>                  
                <!--profiles.active是自定义的字段(名字随便起),自定义字段可以有多个-->
                <profiles.active>dev</profiles.active>
              </properties>
              <activation>
                  <activeByDefault>true</activeByDefault>
              </activation>
          </profile>
          <profile>
              <id>telework</id>
              <properties>
                  <profiles.active>telework</profiles.active>
              </properties>
          </profile>
          <profile>
              <id>sit</id>
              <properties>
                  <profiles.active>sit</profiles.active>
              </properties>
          </profile>
          <profile>
              <id>pre</id>
              <properties>
                  <profiles.active>pre</profiles.active>
              </properties>
          </profile>
          <profile>
              <id>prod</id>
              <properties>
                  <profiles.active>prod</profiles.active>
              </properties>
          </profile>
      </profiles>
  • 当我们打包项目时,激活不同的环境,profiles.active字段就会被赋予不同的值
  • 使用maven打包时通过-P参数,-P后跟上profile的唯一id,如mvn clean package -Ptest
  • 总结:可以通过maven命令给profiles.active赋予不同的值

三、通过maven指定SpringBoot激活哪套配置文件

spring.profiles.active=@profiles.active@

  • 这儿就是第一点说的,SpringBoot配置文件里使用maven属性
  • 到这里,上述知识可以连接起来了
    • 通过第一点可知:maven配置文件里读取SpringBoot的spring.profiles.active属性
    • 通过第三点可知:SpringBoot的spring.profiles.active属性读取maven的自定义属性profiles.active
    • 通过第二点可知:通过maven命令指定maven的profiles.active属性
    • 结论:可以通过maven命令决定打包和使用哪套配置文件

0 人点赞