目录
背景
配置
生产中的使用
.properties读取pom中变量
背景
在开发过程中,我们的项目会存在不同的运行环境,比如开发环境、测试环境、生产环境,而我们的项目在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。而maven的profile机制可以很好的解决上述问题。
配置
先来看一组profile配置
上面子节点的具体含义
id:profile的唯一标识,可用于命令行激活,如,mvn pacakge -Pmyid,即打包时指定使用id为myid的profile
activation:激活器,定义了自动触发此profile的条件逻辑
properties:自定义的可以在整个POM中作为替换使用的字段,如果启用,通常用作过滤器。格式是
只介绍这三个,再对activation的子节点介绍一下:
activeByDefault:设为true,此profile将默认被激活,除非另一个profile激活通过命令行-P的方式或被其激活器激活
生产中的使用
在生产环境中,经常会遇到微服务各个模块升级版本以及不同环境打snapshot/release jar包的问题,那么是如何解决以上两类问题的呢
- 子模块升级版本保持版本统一
项目中的目录结构如上图所示
父pom
可以看到父pom是通过${}的方式,找到了profile文件中revision所需依赖的版本,所依赖的版本再找到
consumer子pom中的继承
provider中子pom的继承
provider中对consumer实体的依赖
可以看到遵循了这样一种方式
由此就可以实现,父pom中改动一处版本,子模块跟着升级
- 区分环境
maven支持 mvn compile -Ptest的方式进行指定profile环境的编译,但是到了生产环境是如何编译的呢,我们公司采用的是omega平台集成了maven命令
测试环境
生产环境
根据以上的配置就可以在不同环境做区分。
项目现在的配置是发布后自动打出jar包,所以只需要在测试环境指定
在生产环境指定
就可以分别生成snapshot/release版本的jar包,并根据后缀名分别上传到不同的仓库。
.properties读取pom中变量
想要在.properties完成下面的效果,
先要引入maven-resources-plugin插件
上述插件的作用是替换掉.properties中的占位符,详细功能请参考maven-maven-resources-plugin插件使用 – 意犹未尽 – 博客园
配合profiles文件使用时,则在确定具体环境后,会从pom文件中找到
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树Java概览Maven基础92459 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!