Maven使用-P参数打包不同环境
Posted BasicLab基础架构实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven使用-P参数打包不同环境相关的知识,希望对你有一定的参考价值。
maven-maven使用-P参数打包不同环境
一般的,开发环境有dev, test 和 pro,他们的配置多有不同,那么就可以使用 maven -P这个参数进行多环境打包
如 clean install -Dmaven.test.skip=true -P pro,就可以切换成生产环境,和 jenkins 配合简直不要太爽!!
举个例子
以 boot 项目来说,现有目录结构:
/src
/main
/java
/resources
/static
/templates
application.yml
application-dev.yml
application-pro.yml
application-test.yml
application.yml:
server:port:8080spring:profiles:# @spring.profiles.active@ 变量将会随着参数的传入被替换active: @spring.profiles.active@
然后三个不同环境的配置文件分别为:
application-dev.yml:
server:port:8080spring:application:name: mpp-dev
application-pro.yml:
server:port:8081spring:application:name: mpp-pro
application-test.yml:
server:port:8082spring:application:name: mpp-test
配置 maven 的 pom 文件,默认激活 dev 环境:
<profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><spring.profiles.active>dev</spring.profiles.active></properties></profile><profile><id>test</id><activation><activeByDefault>false</activeByDefault></activation><properties><spring.profiles.active>test</spring.profiles.active></properties></profile><profile><id>pro</id><activation><activeByDefault>false</activeByDefault></activation><properties>
//spring.profiles.active即在application.yml文件中
//定义的参数@spring.profiles.active@
<spring.profiles.active>pro</spring.profiles.active></properties></profile></profiles>
根据环境过滤只有当前环境的配置文件:
<resources><resource><directory>src/main/resources</directory><!-- 替换占位符--><filtering>true</filtering><excludes><exclude>application-*.yml</exclude></excludes></resource><resource><directory>src/main/resources</directory><!-- 替换占位符--><filtering>true</filtering><includes><include>application-$spring.profiles.active.yml</include></includes></resource></resources>
需要加入 plugin 为:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.1.0</version></plugin>
测试
在当前项目 pom 文件所在的目录下打开命令行,输入 clean package -Dmaven.test.skip=true -P pro
可以看到:
/target
/classes
/com
application.yml
application-pro.yml
打开 application.yml 文件:
server:port:8080spring:profiles:active: pro
可以发现之前 @spring.profiles.active@ 变量已经被替换成了 pro ,而且配置文件只关于生产环境,而且dev 和 test 的配置文件都已经被过滤了
以上是关于Maven使用-P参数打包不同环境的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 项目通过 Maven profiles 使用 -P 支持项目多环境配置打包
Spring Boot 项目通过 Maven profiles 使用 -P 支持项目多环境配置打包