通常,项目要在多个环境部署,每种环境都有各自的资源配置参数,比如:数据库连接、Redis服务器地址等等。 所以,各个环境打包出来的资源是不一样的,如果手动的修改,费时费力。我们可以利用MAVAN的profiles命令来自动化构建不同的部署包。

项目资源配置 一般情况下,项目引用的资源文件可以分为

公共资源文件 各自环境的差异化资源文件 在项目实际运行的时候,所引用的资源文件全部都在一个资源目录下,而存放的时候根据类型不同存放。 所以,构建部署包的时候,利用maven-resources-plugin插件和profiles命令将目标环境的差异化资源复制到公共资源位置,只需要把目标环境差异化的资源文件复制与公共资源一致的目录下即可。

在pom.xml中配置profiles ... dev <package.environment>dev</package.environment> true product <package.environment>product</package.environment> test <package.environment>test</package.environment> ... profiles节点中,定义了三种环境:dev(默认激活dev环境)、test、product。可以在各自的环境中添加需要的property值。

建立三个文件夹(dev,test,product)存放不同环境的各种资源。 maven标准目录中,提供了一个filters目录用于存放资源过滤文件。

src/main/filters/dev src/main/filters/test src/main/filters/product 请避免在resources目录中创建,因为resources目录中的文件默认情况下是不会被过滤的。 如果旧工程中已经在resources目录中创建不同环境的资源目录的时候,如:

src/main/resources/dev src/main/resources/test src/main/resources/product 这时候必须要在pom.xml中配置节点,用于排除各个环境的资源文件。这样,src/main/resources目录中就只包含有公共资源。 注:如果在eclipse中利用maven构建部署包,而eclipse默认会开启自动编译(Build Automatically),自动会把resources目录的全部文件编译到class的输出目录中,就算在pom.xml中配置节点用于过滤资源也是不起作用的。而我们不希望输出的部署包中存在不是目标环境的配置(有可能被泄露),所以推荐将不同环境的资源文件放于filters目录,而不是resources目录。

... src/main/resources/conf src/main/resources/conf/dev src/main/resources/conf/product src/main/resources/conf/test true ... 配置maven-resources-plugin插件 在构建WAR包的时候会经过资源文件处理阶段,maven-resources-plugin则用来处理资源文件。 配置maven-resources-plugin插件,针对不同环境通过命令行或者Profile传入属性的值,复制目标环境的资源,从而构建出不同的WAR包。 ... org.apache.maven.plugins maven-resources-plugin 2.6 copy-resources validate copy-resources ${project.build.outputDirectory} true src/main/resources/conf/${package.environment} conf false ...

转载于:https://juejin.im/post/5b9b5b64e51d450e9e43f299

MAVEN利用Profile构建不同环境的部署包相关推荐

  1. maven学习(下)利用Profile构建不同环境的部署包

    2019独角兽企业重金招聘Python工程师标准>>> 接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local).(开发小组内自测的)开发环境 ...

  2. 使用maven的profile区分本地环境和线上环境

    使用maven的profile区分本地环境和线上环境 多环境开发,使用maven-profile,就可以在打包的时候通过参数的调整,最终打的包也不同. 以区分本地数据库和线上数据库为例 比如测试环境, ...

  3. 利用MAVEN的profile 实现打包环境的切换

    乐哉码农 产生问题的背景 由于在项目开发的时候,我们一般都是使用的本地库,数据库连接写的是本地的,如果我们将项目打成war的时候,里面的配置连接写的是我们本地的,当我们直接把war拷贝到服务器上面进行 ...

  4. 利用Docker构建开发环境

    最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环 ...

  5. 使用maven profile 构建不同环境引用不同的值

    需要做的配置如下 <profiles><profile><id>dev</id><activation><activeByDefaul ...

  6. 如何利用docker 构建golang线上部署环境

    公司最近开发了一个项目是用golang 写的,现在要部署到线上环境去,又不想在服务器上装单独的golang,决定用docker 封装下,直接打到镜像里面,然后就直接在hub.docker.com上面搜 ...

  7. 【Docker】利用docker在window环境下部署python开发环境

    这里写目录标题 1:打开window的一些设置 2:下载docker desktop 3:更改docker 下载源 4:拉取镜像,docker pull ubuntu 5:启动容器,安装ssh 6:把 ...

  8. 利用python构建马科维茨_使用CVXOPT包实现马科维茨投资组合优化

    在真实股票市场的回测 上面的例子特别有趣但不是很适用. 接下来,我们将演示如何在BigQuant中创建一个策略. 本实验的目的是验证在一个买入固定5只股票的多头组合,利用马科维茨组合优化确定的投资组合 ...

  9. 使用maven profile实现多环境可移植构建

    使用maven profile实现多环境可移植构建 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日 ...

最新文章

  1. C# Create Access File
  2. Debian 9.x “stretch“ 解决 /etc/rc.local 开机启动问题
  3. 记录一个坑的解决历程
  4. win10安装jdk1.8
  5. jQuery源码学习视频
  6. SAP Spartacus全局配置模块里和layoutSlot相关的配置
  7. java后台处理ajax请求_java后台怎么对ajax请求的内容进行xss转义?
  8. WM中的OutLook开发和操作
  9. framebuffer驱动详解0——framebuffer介绍
  10. 主域无法开机,备份域升级成主域操作
  11. [Web Chart系列之一]Web端图形绘制SVG,VML, HTML5 Canvas 技术比较
  12. 修改notebook的默认路径_更改jupyter notebook默认存储路径
  13. java获取当前服务器用户_从授权服务器获取资源服务器中的用户角色
  14. 电脑表格软件哪个好用---办公软件推荐
  15. 读书笔记202208 TRC2010 Multi-agent model predictive control of signaling split in urban traffic networks
  16. 风险模型—CreditMetrics模型1
  17. 两台电脑直接使用一根网线传输文件
  18. 第二章:计算机中的数据
  19. 【十三】python面向对象之类和对象
  20. 从零搭建SSM框架及所遇到问题

热门文章

  1. springcloud(十):服务网关zuul初级篇
  2. 大数据时代 银行信息安全如何防护?
  3. Ubuntu 16.04粘贴板增强工具Diodon
  4. Redis开发运维实践上线部署规划之持久化设置
  5. [C语言]函数与调试
  6. zabbix3.0.3-源码安装
  7. 为nopcommerce自定义用户积分功能(1)
  8. Session_End引发的性能问题!
  9. 苹果新专利曝光,可通过GPS和视觉识别器来识别车辆
  10. 入行数据科学,仅需6步