Maven | 利用Profile构建不同环境的部署包

博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):
利用Profile构建不同环境的部署包
maven 根据P参数值打包动态修改properties文件中值或一定properties
Maven插件maven-antrun-plugin的使用
maven学习(下)利用Profile构建不同环境的部署包

项目开发好以后,通常要在多个环境部署,比如常用的:本机环境(local)、(开发小组内自测的)开发环境(dev)、(提供给测试团队的)测试环境(test)、预发布环境(pre)、正式生产环境(prod),每种环境都有各自的配置参数,比如:数据库连接、远程调用的ws地址等等。如果每个环境build前手动修改这些参数,显然太不方便,所以希望打包的时候 根据不同的环境来动态使用不同环境properties文件 或者动态修改properties参数值。

方法一 :具体参数使用${key}占位符方式打包替换

如下图,有uat这套环境配置,然后配置文件中的配置参数用${key}的方式赋值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后,在maven的pom中指定每套环境的参数值,对应上面配置文件中的${key}
完整的profile如下格式:
在这里插入图片描述
参数配置部分:
在这里插入图片描述
我们还要启动resources的filter过滤器(这一步是必须的):
在这里插入图片描述
按照上述配置后,我们执行maven打包操作后:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们可以看到mongoDBConfig.properties、redisConfig.properties、zkConfig.properties等文件都被替换到指定环境的参数了

方式二 : 将指定环境下的*.properties文件都移动到classes下(替换/移动)

由于 有些系统会在项目中的resources下指定各套环境配置文件,如下图片:
在这里插入图片描述
但是我们打包后 只希望将指定环境下的*.properties文件都移动到classes下,所以可以考虑该方法,即使用使用maven-antrun-plugin插件方式实现。

新版本的Maven本身自带该插件,所以不用在pom文件中进行配置,而idea这种里面自带的Maven,则需要在pom文件中手动配置

参数值准备
在这里插入图片描述
增加一个plugin 为maven-antrun-plugin在这里插入图片描述
解释:

 <phase> <!-- Maven的生命周期阶段 -->
 <id>profile为唯一的标识

然后命令打包:

mvn install -Pdev

去指定target目录中可以看到打包的项目中已经将这几个*.properties移动到classes下了。

有的时候 我们想通过动态打包,生成的工程的名字是带各套环境, 比如:clover-core-dev-1.0.jar

<finalName>clover-core-${clover.version}</finalName> --这个就是工程clover-core打包最终名
<version>${clover.version}</version>  ---这个将会打包后,deploy(部署在)中央私库后最终的version

在这里插入图片描述

Ps:

  • 在maven里,如果一个依赖项的scope是provided,表示由容器提供,打包时将不会打包进最终的package里,所以这样配置后,生产环境打包时,依赖项的scope全变成了provided,即不打包进war文件,而本机环境下,因为scope是compile,所以会打包到war里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值