前言:
  写一篇水文来打发下时间吧^_^. 在应用开发中, 总会遇到开发/测试/预发布/线上环境, 其环境不同, 其具体的配置项也有所不同, 因此如何快速的切换各个环境配置, 进行打包配置, 成了一个小痛点.
  本文主要讲述基于maven构建的java工程(基于spring), 如何实现多环境配置, step by step.

多环境配置:
  把多环境的配置文件集中起来, 比如按如下方式整合于工程代码.
  
  需要被打包替换的配置文件app.properties文件存于src/main/resource/conf下, 其内容为:

key.name=${key.name}
key.value=${key.value}

profile标签:
  在maven中profile标签就是为多环境配置而生, 它支持定义了各个环境下的变量集, 选取激活某个profile后, 会自动屏蔽掉其他profile的变量.
  比如定义如下:

    <profiles><profile><id>test</id><activation><activeByDefault>true</activeByDefault></activation><properties><env>test</env></properties></profile><profile><id>online</id><properties><env>online</env></properties></profile></profiles>

  这边定义了test, online两个profile.
  
  此时默认打包, 其会选用test这个profile, 原因是因为它是默认激活的, 也就是说变量env(key=env, value=test)将作用于pom.xml文件的其他配置项.

filter&resource标签:
  filter和resource标签是一块使用的, 前者指定了载入的properties文件, 后者则指定了key/value对替换的目标作用目录.

<build>  <finalName>test-app-project</finalName><!-- 使用指定的filter进行过滤,在执行mvn命令的时候带上-Ptest就代表测试环境(默认), 就会加载测试环境的properties,-Ponline就代表线上环境 --><filters><filter>settings/${env}/app.properties</filter></filters><!-- 资源文件位置src/main/resources/, 这下面的资源文件的${}会全部被替换成filter中的标签内容 --><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><!-- exclude可以排除指定文件,支持通配符, 匹配项不会生成到classes目录下 --><!--<excludes>--><!--<exclude>env/dev.properties</exclude>--><!--</excludes>--></resource></resources>
</build>

  其实从xml的配置中, 我们可以解读如下, filter目录为: settings/${env}/app.properties. 由于激活的profile为test, 则env为test. 这样filter目录为settings/test/app.properties. maven自动提取这个key/value文件, 把src/main/resource目录下的配置文件中${}全部替换.

测试:
  通过maven进行编译打包, 其可以指定命令行参数P, 指定激活那个profile.
  比如要激活online(线上配置), 则执行如下命令:

mvn -Ponline package

  执行之后具体的产出结果如下:
  

总结:
  maven的多环境配置, 算是一个基础的点. 这边纯粹写个水文吧, 记录一下^_^.

转载于:https://www.cnblogs.com/mumuxinfei/p/8945270.html

maven工程的多环境配置方案(profile)相关推荐

  1. LATEX简介以及相应的环境配置方案(附带刘海洋的LATEX入门书籍链接)

    目录 一. LATEX简介 二.LATEX环境配置方案(TeXLive+Winedt+SumatraPDF) 2.1 编译工具TeXLive 2.2 编辑器WinEdt 2.3 轻量级PDF软件Sum ...

  2. Mac笔记本idea打包maven工程,本地环境运行正常,打包成功,却启动不成功

    记录一下: Mac笔记本使用idea打包maven工程, 本地环境运行正常,打包成功,却启动不成功: window打包成功且启动正常: 查询启动错误日志是由于zookeeper null指针的问题,但 ...

  3. Maven(2)--- 环境配置

    Maven 环境配置 Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK. 如果你还未安装 JDK,可以参考我们的 Java 开发环境配置. 系统要求 项目 要求 JDK ...

  4. maven的安装和环境配置的过程记录

    [前置环境确认]第一步确认本机已正确安装jdk,并且已经在环境变量中配置JAVA_HOME,修改了Path.cmd命令行中输入echo %JAVA_HOME%,查看JAVA_HOME是否配置.在CMD ...

  5. 工程实战-ES6环境配置

    最近在学习ES6语法,故有了从零开始搭建ES6环境的想法.下面第一部分是单纯的ES6环境配置,第二部分是基于webpack环境的工程配置 1. 纯ES6环境配置 1.1 packages中的依赖项: ...

  6. (二)Maven的安装与环境配置

    想要安装 Apache Maven在Windows 系统上, 需要下载 Maven 的 zip 文件,并将其解压到你想安装的目录,并配置 Windows 环境变量. 所需工具 : 1.JDK 2.Ma ...

  7. 解决SSH项目乱码问题的环境配置方案

    1.switch workspace----->other------->找到自己的安装目录 window ------->preference----->general--- ...

  8. Maven(一):安装与环境配置、使用Maven搭建web项目

    相关阅读: Maven(一):安装与环境配置.使用Maven搭建web项目 Maven(二):常用命令.依赖管理 Maven(三):将web项目的war包热部署到远程Tomcat服务器 Maven(四 ...

  9. Maven - 基础入门与安装配置

    Maven - 基础入门与安装配置 [1]Maven基础入门 Maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成.而插件本身并不包含在Maven的核心程序中. 当我们 ...

最新文章

  1. VSLAM|回环检测之词袋字典效果测试及一点思考
  2. 服务器无效响应状态码12029,使用wininet发送http请求时出现12029无法与服务器建立连接...
  3. 关于JS的循环和函数,由入门到放弃
  4. Docker容器虚拟化技术---Docker安装和操作1
  5. service docker start后docker stop/waiting的解决方法
  6. 电脑怎么找到tomcat端口_更换内存条的时候我怎么找到自己电脑配置的详细信息...
  7. linux 源码包解压编译安装
  8. Harris角点检测原理分析
  9. MFC项目使用Win7自带语音库(包含COM函数返回 “没有注册类”解决方式)
  10. 腾讯元老赚够钱后辞职,到安徽隐居,每天对着200亩地发呆
  11. 数的变幻(小明买书)
  12. wordpress瀑布流图片主题PhotoBroad模板V2.0
  13. springboot2
  14. Linux笔记 系统安装、网络设置、远程连接、密钥认证、克隆、互联
  15. 更改java和javac的默认输出语言为英文
  16. Python实现车牌摇号小程序
  17. linux运行java程序内存过大_排查java应用linux环境内存占用过高的问题
  18. 标记语言/脚本语言/
  19. c语言笔记本无法读取鼠标,USB鼠标失灵了怎么办 电脑无法识别USB鼠标【详解】...
  20. 使用和wait让你的脚本并行执行

热门文章

  1. 将图像转为特征值_用K均值进行图像分割
  2. c语言 多个线程对同一变量执行memcpy_你可曾听过网络编程中应用线程本地存储?...
  3. 1.简述计算机硬盘如何保养,电脑硬盘的保养知识
  4. isfile方法_递归算法是一种直接或者间接调用自身函数或者方法的算法
  5. html页面调用高德地图,html前端使用高德地图入门教程,并在地图上标记位置-Go语言中文社区...
  6. 箭头函数写法_箭头函数
  7. Advanced clustering methods (Cure, Chameleon, Rock, Jarvis-Petrich)
  8. python生成100个随机数、写入文件后再读取显示内容_Python3 实现随机生成一组不重复数并按行写入文件...
  9. python写入指定路径的文件_python 从shell读取指定文件以及写入指定文件
  10. C语言——指针函数和函数指针(回调函数)