SpringBoot与Maven多环境整合!!!

        导读        

在中大型企业做过开发都知道,开发任何的项目至少都需要三个环境,分别是开发环境,测试环境,生产环境。环境不同意味着配置也是不相同的,比如数据库,文件路径等等配置,那么如何解决这么多环境整合在一起既不混乱又能很优雅呢?今天就来讲讲SpringBoot如何实现多环境整合的。

SpringBoot对多环境整合有着自己的实现,但是在使用Maven的项目中我并不推荐直接使用SpringBoot自带的,而是要和Maven整合在一起,这样能够使得我们打包,启动等操作变的更加方便。比如我们经常使用的Maven打包命令如下:

mvn clean install package -P dev

这个-P就是指定配置环境的,在IDEA中打包根本不用写命令,直接点击一下就OK了,如下图:

        开撸        

1. 准备配置文件

准备四个配置文件,分别是application.yml、application-dev.yml、application-test.yml、application-prod.yml。

application.yml作为主配置文件,里面定义了需要激活的环境,如下:

spring:
  profiles:
    active: @profile.active@

application-*.yml这三个配置文件就是各自环境的配置,比如application-dev.yml(开发环境)文件的配置如下:

server:
  port: 8080
  servlet:
    context-path: /api-front
spring:
  redis:
    database: 2
    host: 120.26.101.203
    password: live4dream
    jedis:
      pool:
        max-active: 8
        min-idle: 0
        maxActive: 10

2. POM文件配置

要和Maven整合当然少不了pom文件的配置,maven中也提供了profile的支持,每个profile能够定义自己的一些依赖和配置和激活条件,profile配置如下:

<!--定义三种开发环境-->
    <profiles>
        <profile>
            <!--不同环境的唯一id-->
            <id>dev</id>
            <activation>
                <!--默认激活开发环境-->
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!--profile.active对应application.yml中的@profile.active@-->
                <profile.active>dev</profile.active>
            </properties>
        </profile>

        <!--测试环境-->
        <profile>
            <id>test</id>
            <properties>
                <profile.active>test</profile.active>
            </properties>
        </profile>

        <!--生产环境-->
        <profile>
            <id>prod</id>
            <properties>
                <profile.active>prod</profile.active>
            </properties>
        </profile>
    </profiles>

maven中的profile的激活条件还可以根据jdk、操作系统、文件存在或者缺失来激活。如下:

<!--activation用来指定激活方式,可以根据jdk环境,环境变量,文件的存在或缺失-->
            <activation>
                <!--配置默认激活-->
                <activeByDefault>true</activeByDefault>
                
                <!--通过jdk版本-->
                <!--当jdk环境版本为1.8时,此profile被激活-->
                <jdk>1.8</jdk>
                <!--当jdk环境版本1.8或以上时,此profile被激活-->
                <jdk>[1.8,)</jdk>

                <!--根据当前操作系统-->
                <os>
                    <name>Windows XP</name>
                    <family>Windows</family>
                    <arch>x86</arch>
                    <version>5.1.2600</version>
                </os>
            </activation>
        </profile>

3. 资源过滤

在进行生产环境打包的时候并不需要开发和测试环境的一些文件,这里我们可以进行资源的过滤,保留需要的配置和文件,同样是在pom文件中定义,如下:

    <build>
        <resources>
            <!--排除配置文件-->
            <resource>
                <directory>src/main/resources</directory>
                <!--先排除所有的配置文件-->
                <excludes>
                    <!--使用通配符,当然可以定义多个exclude标签进行排除-->
                    <exclude>application*.yml</exclude>
                </excludes>
            </resource>

            <!--根据激活条件引入打包所需的配置和文件-->
            <resource>
                <directory>src/main/resources</directory>
                <!--引入所需环境的配置文件-->
                <filtering>true</filtering>
                <includes>
                    <include>application.yml</include>
                    <!--根据maven选择环境导入配置文件-->
                    <include>application-${profile.active}.yml</include>
                </includes>
            </resource>
        </resources>
    </build>

上述配置主要分为两个方面,第一是先排除所有配置文件,第二是根据profile.active动态的引入配置文件。

4. IDEA切换

上面的配置全部完成的话,就可以在DIEA中正常使用了,如下图:

点击lifecycle中的package即可正常打包,相当于以下命令:

mvn clean install package -P dev

        总结        

SpringBoot和Maven的多环境配置需要以下步骤:

  1.  准备多环境的配置文件

  2. POM文件中配置profile

  3. POM文件中配置资源过滤

  4. IDEA中自由切换

至此SpringBoot和Maven的整合就完成了,整合的源码已经上传,回复关键词profile获取!!!

发布了83 篇原创文章 · 获赞 36 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_34162294/article/details/105260148
今日推荐