Maven的porfile与SpringBoot的profile结合使用详解

    使用maven的profile功能,我们可以实现多环境配置文件的动态切换,可参考我的上一篇博客。但随着SpringBoot项目越来越火,越来越多人喜欢用SpringBoot的profile功能。但是用SpringBoot的profile功能时,一般我们默认激活的profile肯定是开发环境的profile。当我们打成jar包后,如果在生产环境下运行,就需要在运行这个jar包的命令后面加个命令行参数来指定切换的profile。虽然这样很方便,但是容易忘记加这个参数。
    我们可以通过maven的profile功能和SpringBoot的profile功能结合使用。 效果为:当maven打包时通过profile指定配置为test环境的配置,那么我们SpringBoot里面默认激活的就是test环境的配置。   这样我们只需要打包时指定profile后,直接运行jar就可以,不需要在命令行加参数了。这个效果就和我们普通web项目使用maven的profile的效果类似了。

一、思路

    (1)通过maven的profile功能,在打包的时候,通过-P指定maven激活某个pofile,这个profile里面配置了一个参数 activatedProperties ,不同的profile里面的这个参数的值不同
    (2)SpringBoot的application.properties文件里面spring.profiles.active填的值取上面maven的 activatedProperties 参数值。
  这样能实现的效果为:
示例一:
    maven打包命令为   mvn clean package -P test    
    那么application.properties里面的spring.profiles.active值就是maven中 id为test的profile的activatedProperties参数值
示例二:
    maven打包命令为   mvn clean package -P product
    那么application.properties里面的spring.profiles.active值就是maven中 id为product的profile的activatedProperties参数值
 
1
示例一:
2
    maven打包命令为   mvn clean package -P test    
3
    那么application.properties里面的spring.profiles.active值就是maven中 id为test的profile的activatedProperties参数值
4
示例二:
5
    maven打包命令为   mvn clean package -P product
6
    那么application.properties里面的spring.profiles.active值就是maven中 id为product的profile的activatedProperties参数值

二、案例

(1)项目结构介绍
    项目结构如下图所示,是个常见的SpringBoot项目结构,不同环境的propertis文件的后缀不同(见图中红框处)
1222688-20180829143534322-1692462961.png
(2)pom文件中配置maven的profile
    maven的profile的配置见下面代码
    注意:maven的profile中activatedProperties参数值需要和SpringBoot的不同环境Properties文件的后缀一样。
    比如开发环境的Properties的文件名为application-develop.properties,那么maven中develop的profile里面的 activatedProperties参数值就应该是develop
    <profiles>
        <profile>
        	<!-- 开发 -->
            <id>develop</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <activatedProperties>develop</activatedProperties>
            </properties>
        </profile>
        <profile>
        	<!-- 测试 -->
            <id>fuy</id>
            <properties>
                <activatedProperties>fuy</activatedProperties>
            </properties>
        </profile>
        <profile>
        	<!-- 生产 -->
            <id>production</id>
            <properties>
                <activatedProperties>production</activatedProperties>
            </properties>
        </profile>
    </profiles>
x
 
1
    <profiles>
2
        <profile>
3
            <!-- 开发 -->
4
            <id>develop</id>
5
            <activation>
6
                <activeByDefault>true</activeByDefault>
7
            </activation>
8
            <properties>
9
                <activatedProperties>develop</activatedProperties>
10
            </properties>
11
        </profile>
12
        <profile>
13
            <!-- 测试 -->
14
            <id>fuy</id>
15
            <properties>
16
                <activatedProperties>fuy</activatedProperties>
17
            </properties>
18
        </profile>
19
        <profile>
20
            <!-- 生产 -->
21
            <id>production</id>
22
            <properties>
23
                <activatedProperties>production</activatedProperties>
24
            </properties>
25
        </profile>
26
    </profiles>
(3)application.properties中的配置
    在application.properties文件中配置SpringBoot默认激活的propertis文件。这时候spring.profiles.active取上面maven的profile里面配置的activatedProperties的值,这个取值要用@符号来取。 具体 见下面代码
spring.profiles.active=@activatedProperties@
 
1
spring.profiles.active=@activatedProperties@
(4)如何打包
    打包时用 mvn clean package -P profile的id
          如果不加-P参数,那么默认就是 <activeByDefault>true</activeByDefault> 所在的profile
(5)效果图
          当我们打包命令为mvn clean package -P production 时,解压后的jar包中application.properties配置文件中spring.profiles.active的值自动变成了production
          1222688-20180829143536252-1911586796.png

三、小结

(1)该方式优点:打包后不需要通过命令行参数来切换不同环境的配置文件,把指定环境的这一步放到了maven打包的命令上
(2)该方式其实是利用了maven的profile功能和SpringBoot的profile相结合使用

四、参考链接


    

转载于:https://www.cnblogs.com/zeng1994/p/06917ed3b98677fa7a1b0f74de16c3be.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值