Maven的porfile与SpringBoot的profile结合使用详解
2018-08-29 14:14
896 查看
使用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的效果类似了。
(2)SpringBoot的application.properties文件里面spring.profiles.active填的值取上面maven的activatedProperties参数值。 这样能实现的效果为:
一、思路
(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 test3
那么application.properties里面的spring.profiles.active值就是maven中 id为test的profile的activatedProperties参数值4
示例二:5
maven打包命令为 mvn clean package -P product6
那么application.properties里面的spring.profiles.active值就是maven中 id为product的profile的activatedProperties参数值
二、案例
(1)项目结构介绍
项目结构如下图所示,是个常见的SpringBoot项目结构,不同环境的propertis文件的后缀不同(见图中红框处)(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>
x1
<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三、小结
(1)该方式优点:打包后不需要通过命令行参数来切换不同环境的配置文件,把指定环境的这一步放到了maven打包的命令上(2)该方式其实是利用了maven的profile功能和SpringBoot的profile相结合使用四、参考链接
(1)https://www.cnblogs.com/zeng1994/p/a442108012ffd6a97b22c63055b48fe9.html (2)http://dolszewski.com/spring/spring-boot-properties-per-maven-profile/相关文章推荐
- maven profile 结合spirng注解使用——实现配置文件最小化
- Maven的profile使用详解
- Maven的profile使用详解
- Maven与Spring profile的结合使用
- C#FileStream 和StreamReader结合使用
- 传智播客--CVS,SVN,Maven的服务器端配置和客户端使用详解(毛伟)
- ASP程序与SQL存储过程结合使用详解
- Oracle Profile 使用详解
- Commons FileUpload组件使用方法详解(包含源代码)
- Oracle Profile 使用详解
- Eclipse和Maven的结合使用--Please make sure the -vm option in eclipse.ini
- 使用maven的profile和filter插件管理配置项--不同环境(dev,beta,production)轻松切换
- Oracle Profile 使用详解
- 使用maven的profile和filter插件管理配置项
- openFileOutput/openFileInput使用详解
- Eclipse和Maven的结合使用--Please make sure the -vm option in eclipse.ini
- Oracle Profile 使用详解
- Oracle Profile 使用详解(转)
- 使用curl做上传文件处理(结合file服务)
- 使用maven的profile和filter插件管理配置项