springboot与maven的多环境兼容解决方案

大家在使用maven开发springboot程序的时候,肯定会用到maven的多环境配置,以及springboot本身的多环境配置。那么两者该如何结合起来使用呢?

一、首页我们在pom.xml里配置多环境,配置如下:

 <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <pom.profile>dev</pom.profile>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <pom.profile>test</pom.profile>
            </properties>
        </profile>

        <profile>
            <id>prod</id>
            <properties>
                <pom.profile>prod</pom.profile>
            </properties>
        </profile>

    </profiles>

从上面的配置我们看到,配置了3个环境,profile节点可以有任意多个。

(1)子元素 id为环境id,我们可以写 dev,test,prod等;

(2)每个环境profile我们添加多个属性值,这个值可以在application.yml/application.properties等配置文件中使用,比如我们这配置的pom.profile,这个名字可以自定义;

(3)默认环境节点的配置,我们用activation--activeByDefault设置tue即可;

二、继续在pom.xml里配置,在build里添加插件,让pom.xml里的属性值可以在其他地方使用。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <encoding>utf-8</encoding>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
            </plugin>
        </plugins>
    </build>

我们添加了插件 maven-resources-plugin,一定要配置confguration的2个子节点:encoding和useDefaultDelimiters,不配置则无法生效。配置好后,右侧的Maven就有如下的Profiles选项了,勾选一个,执行package等命令,即为该环境生成Jar等。

pom.xml的配置已完成,接下来我们来配置springboot的application.yml配置文件。

#设置启用的环境
spring:
  profiles:
    active: ${pom.profile}


---
#开发
spring:
  profiles: dev
server:
  port: 880

---
#测试
spring:
  profiles: test
server:
  port: 881

---
#生产
spring:
  config:
    activate:
      on-profile: prod

server:
  port: 883

配置了3个环境,spring.profiles(或spring.config.activate.on-profile)配置的值对应的环境。spring.profiles.active配置激活的环境,值使用占位符 ${pom.profile},这个占位符就是从pom.xml的环境属性中获取的。

三、验证

   我们执行package,生成jar包,我们打开jar包 ,目录BOOT-INF/classes里打开application.yml,就可以看到占位符${pom.profile}已经替换成pom.xml里对应的值。

 

 

猜你喜欢

转载自blog.csdn.net/puzi0315/article/details/127196143
今日推荐