通过maven profile 打包指定环境配置
背景
最近换了个新公司接手了一个老项目,然后比较坑的是这个公司的项目都没有没有做多环境打包配置,每次发布一个环境都要手动的去修改配置文件。今天正好有空就来配置下。
解决这个问题的方式有很多,我这里挑选了一个个人比较喜欢的方案,通过 maven profile 打包的时候按照部署环境打包不同的配置,下面说下具体的操作
配置不同环境的配置文件
建立对应的环境目录,我这里有三个环境分别是,dev/test/pro 对应 开发/测试/生产。建好目录后将相应的配置文件放到对应的环境目录中
配置 pom.xml 设置 profile
这里通过 activeByDefault 将开发环境设置为默认环境。如果你是用 idea 开发的话,在右侧 maven projects > Profiles 可以勾选对应的环境。
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>pro</id>
<properties>
<profiles.active>pro</profiles.active>
</properties>
</profile>
</profiles>
打包时根据环境选择配置目录
这个项目比较坑,他把配置文件放到了webapps/config下面。所以这里打包排除 dev/test/pro 这三个目录时候,不能使用exclude去排除,在尝试用 warSourceExcludes 可以成功。之前还试过 packagingExcludes 也没有生效,查了下资料发现 packagingExcludes maven 主要是用来过滤 jar 包的。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<warSourceExcludes>
config/test/**,config/pro/**,config/dev/**
</warSourceExcludes>
<webResources>
<resource>
<directory>src/main/webapp/config/${profiles.active}</directory>
<targetPath>config</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
最后根据环境打包
## 开发环境打包
mvn clean package -P dev ## 测试环境打包
mvn clean package -P test ## 生产环境打包
mvn clean package -P pro
执行完后发现 dev 目录下的文件已经打包到 config下
启动项目
我在启动项目的时候,死活启动不了。后来对比了前后的 target 目录发现子项目的 jar 包有些差异,经过多次尝试后。将所有子项目下 target 项目重新删除 install 最后成功启动。
通过maven profile 打包指定环境配置的更多相关文章
- Maven profile 打包分环境加载不同的资源文件
在实际开发项目中,常常有几种环境,一般情况下最少有三种环境:开发.测试.正式. 各个环境之间的参数各不相同,比如mysql.等不同环境的host不一样,若每个环境都手动替换环境很容易出错,这里我们利用 ...
- maven profile实现多环境配置
每次项目部署上线都需要手动去修改配置文件(比如数据库配置,或者一个自定义的配置)然后才能打包,很麻烦,网上找到 maven profile可以完成这个工作,记录如下: 环境:eclipse + spr ...
- idea maven 动态打包指定环境
jar pom.xml <!-- 指定文件id --> <profiles> <profile> <id>alpha</id> <pr ...
- 使用maven profile实现多环境配置相关打包
项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev 在eclipse中可以右击选项run con ...
- maven 利用 profile 进行多环境配置
我们在进行项目的多环境配置时,有很多种方式供我们选择,比如 SpringBoot 自带的 application-dev.yml.maven 的 profile 等.这里介绍的就是如何利用 profi ...
- 使用maven profile实现多环境可移植构建(转自CSDN)
使用maven profile实现多环境可移植构建 标签: maven profilemaven自动构建maven自动部署maven可移植构建持续集成 2014-04-25 23:37 26905人阅 ...
- CAS (13) —— CAS 使用Maven Profile支持多环境编译
CAS (13) -- CAS 使用Maven Profile支持多环境编译 摘要 CAS 使用Maven Profile支持多环境编译 版本 tomcat版本: tomcat-8.0.29 jdk版 ...
- maven profile实现多环境打包
快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev< ...
- maven工程的多环境配置方案(profile)
前言: 写一篇水文来打发下时间吧^_^. 在应用开发中, 总会遇到开发/测试/预发布/线上环境, 其环境不同, 其具体的配置项也有所不同, 因此如何快速的切换各个环境配置, 进行打包配置, 成了一个小 ...
随机推荐
- Linux 系统调用过程详细分析
内核版本:Linux-4.19 操作系统通过系统调用为运行于其上的进程提供服务. 那么,在应用程序内,调用一个系统调用的流程是怎样的呢? 我们以一个假设的系统调用 xyz() 为例,介绍一次系统调用的 ...
- 实验二 request、out对象使用
request.out对象使用 一.实验目的 1.掌握代码片段中的注释的应用: 2.掌握JSP脚本标示---Java代码片段的应用. 二.实验内容 1.设计教师与学生不同登陆界面,如下图: 2.验证码 ...
- 项目中git分支管理策略
- js实现在当前页面搜索高亮显示字的方法
在html页面上,有时候会遇到一些检索高亮显示的问题,具体用js是实现的方式,代码展示. Jsp页面设置方式 <li class="pull-left" id="s ...
- windows创建域共享文件
windows创建域共享文件 windows常见的文件系统: FAT FAT32 NTFS NTFS的特点: 可以对单个文件或文件夹设置权限 支持更大的磁盘容量 支持加密和压缩 活动目录需要NTFS ...
- redis缓存清除
1.redis根目录调出命令行(cmd) 2.登录redis:redis-cli -h 127.0.0.1 -p 6379 3.查看所有key值:keys * 4.删除指定索引的值:del key 5 ...
- Spark学习之路 (一)Spark初识
目录 一.官网介绍 1.什么是Spark 二.Spark的四大特性 1.高效性 2.易用性 3.通用性 4.兼容性 三.Spark的组成 四.应用场景 正文 回到顶部 一.官网介绍 1.什么是Spar ...
- PHP mysql查询工具
PHP基于PDO的 mysql 查询工具 单页面实现,将页面放在任意目录即可. 访问用户 admin 密码 password 代码很简单,主要为了在没有phpMyAdmin时方便执行SQL. 效果如下 ...
- web服务器之nginx和apache的区别
① apache属于重量级的服务器,nginx属于轻量级的服务器; 区别在于对一些功能的支持,比如: pathinfo,php模块方面 ② nginx抗高并发能力强. 由于nginx采用的是异步非阻 ...
- body标签中l的相关标签
字体标签: h1~h6.font. u.b,.strong. em. sup. sub 排版标签: div,.span.br.hr.center.pre 图片标签: img 超链接: a 列表标签: ...