背景

最近换了个新公司接手了一个老项目,然后比较坑的是这个公司的项目都没有没有做多环境打包配置,每次发布一个环境都要手动的去修改配置文件。今天正好有空就来配置下。

解决这个问题的方式有很多,我这里挑选了一个个人比较喜欢的方案,通过 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 打包指定环境配置的更多相关文章

  1. Maven profile 打包分环境加载不同的资源文件

    在实际开发项目中,常常有几种环境,一般情况下最少有三种环境:开发.测试.正式. 各个环境之间的参数各不相同,比如mysql.等不同环境的host不一样,若每个环境都手动替换环境很容易出错,这里我们利用 ...

  2. maven profile实现多环境配置

    每次项目部署上线都需要手动去修改配置文件(比如数据库配置,或者一个自定义的配置)然后才能打包,很麻烦,网上找到 maven profile可以完成这个工作,记录如下: 环境:eclipse + spr ...

  3. idea maven 动态打包指定环境

    jar pom.xml <!-- 指定文件id --> <profiles> <profile> <id>alpha</id> <pr ...

  4. 使用maven profile实现多环境配置相关打包

    项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev 在eclipse中可以右击选项run con ...

  5. maven 利用 profile 进行多环境配置

    我们在进行项目的多环境配置时,有很多种方式供我们选择,比如 SpringBoot 自带的 application-dev.yml.maven 的 profile 等.这里介绍的就是如何利用 profi ...

  6. 使用maven profile实现多环境可移植构建(转自CSDN)

    使用maven profile实现多环境可移植构建 标签: maven profilemaven自动构建maven自动部署maven可移植构建持续集成 2014-04-25 23:37 26905人阅 ...

  7. CAS (13) —— CAS 使用Maven Profile支持多环境编译

    CAS (13) -- CAS 使用Maven Profile支持多环境编译 摘要 CAS 使用Maven Profile支持多环境编译 版本 tomcat版本: tomcat-8.0.29 jdk版 ...

  8. maven profile实现多环境打包

    快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev< ...

  9. maven工程的多环境配置方案(profile)

    前言: 写一篇水文来打发下时间吧^_^. 在应用开发中, 总会遇到开发/测试/预发布/线上环境, 其环境不同, 其具体的配置项也有所不同, 因此如何快速的切换各个环境配置, 进行打包配置, 成了一个小 ...

随机推荐

  1. Linux 系统调用过程详细分析

    内核版本:Linux-4.19 操作系统通过系统调用为运行于其上的进程提供服务. 那么,在应用程序内,调用一个系统调用的流程是怎样的呢? 我们以一个假设的系统调用 xyz() 为例,介绍一次系统调用的 ...

  2. 实验二 request、out对象使用

    request.out对象使用 一.实验目的 1.掌握代码片段中的注释的应用: 2.掌握JSP脚本标示---Java代码片段的应用. 二.实验内容 1.设计教师与学生不同登陆界面,如下图: 2.验证码 ...

  3. 项目中git分支管理策略

  4. js实现在当前页面搜索高亮显示字的方法

    在html页面上,有时候会遇到一些检索高亮显示的问题,具体用js是实现的方式,代码展示. Jsp页面设置方式 <li class="pull-left" id="s ...

  5. windows创建域共享文件

    windows创建域共享文件 windows常见的文件系统: FAT FAT32 NTFS NTFS的特点: 可以对单个文件或文件夹设置权限 支持更大的磁盘容量 支持加密和压缩 活动目录需要NTFS ...

  6. redis缓存清除

    1.redis根目录调出命令行(cmd) 2.登录redis:redis-cli -h 127.0.0.1 -p 6379 3.查看所有key值:keys * 4.删除指定索引的值:del key 5 ...

  7. Spark学习之路 (一)Spark初识

    目录 一.官网介绍 1.什么是Spark 二.Spark的四大特性 1.高效性 2.易用性 3.通用性 4.兼容性 三.Spark的组成 四.应用场景 正文 回到顶部 一.官网介绍 1.什么是Spar ...

  8. PHP mysql查询工具

    PHP基于PDO的 mysql 查询工具 单页面实现,将页面放在任意目录即可. 访问用户 admin 密码 password 代码很简单,主要为了在没有phpMyAdmin时方便执行SQL. 效果如下 ...

  9. web服务器之nginx和apache的区别

    ① apache属于重量级的服务器,nginx属于轻量级的服务器; 区别在于对一些功能的支持,比如:  pathinfo,php模块方面 ② nginx抗高并发能力强. 由于nginx采用的是异步非阻 ...

  10. body标签中l的相关标签

    字体标签: h1~h6.font. u.b,.strong. em. sup. sub 排版标签: div,.span.br.hr.center.pre 图片标签: img 超链接: a 列表标签: ...