Maven Filter与Profile隔离生产环境与开发环境

在不同的开发阶段,我们一般用到不同的环境,开发阶段使用开发环境的一套东西,测试环境使用测试环境的东西,可能有多个测试环境,生产环境使用的是另外一套,生产环境要求是最严格的。

不同环境,所需要的服务器地址,数据库,缓存,配置中心等配置一般不同,如果每次切换环境都要手动修改,那就太麻烦了,好在使用Maven可以帮我们做这些事情。

介绍

  • Filter: 过滤,一般配合maven resource插件使用,可以替换maven资源目录下的文本文件中变量为我们设置的值,变量使用${}包起来。
  • Profile: 侧面,可以理解为某个角度,盲人摸象角度不同得出的结论也不同,配置不同的profile,就像从不同的角度看待一个东西,得出的结果不一样。在开发中指:“环境”

案例

Filter的使用
  1. 新建一个maven项目,现在IDE新建项目步骤都非常简单

  2. 在resource目录下新建一个任意文件,我们新建文件名为 application.properties文件,内容只有一行

    app.name=${maven.app.name}
  • 在main目录下新建filters目录,然后新建一个dev.properties文件,里面也只有一行内容,如下:

    maven.app.name=aihe-dev
  • 配置pom.xml,编译部分如下:

        <build>
    <filters>
    <!-- 指定过滤变量的位置 -->
    <filter>src/main/filters/dev.properties</filter>
    </filters>
    <plugins> <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
    <!-- 使用默认的变量标记方法即${*} -->
    <useDefaultDelimiters>true</useDefaultDelimiters>
    </configuration>
    </plugin>
    </plugins> <resources>
    <resource>
    <directory>src/main/resources</directory>
    <!-- 启用过滤 -->
    <filtering>true</filtering>
    </resource>
    </resources>
    </build>
  1. 现在的目录结构如下:

image.png
  1. 编译运行查看效果。

    mavn clean compile
image.png
profile使用
  1. 上面我们可以看到,filter是生效的,但是如果只是这样用,那么功能太简单了点,所以还要加上profile.
  2. 修改pom.xml,并且添加profile,我们配置了两个profile,一个dev默认是激活状态,一个pro
    <build>
<filters>
<!-- 指定过滤变量的位置 -->
<filter>src/main/filters/${env}.properties</filter>
</filters>
<!-- ...与刚才的内容相同 -->
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile> <profile>
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
  1. 添加pro.properties,key和dev.properties中的key相同,内容如下:

    maven.app.name=aihe-pro
  1. 运行查看效果,maven命令行的-P参数指定使用profile

// 指定profile为pro时候,可以看到application.properties文件中的内容为maven.app.name=aihe-pro
mvn clean compile -P pro //profile为dev的时候,文件中的内容为maven.app.name=aihe-dev
mvn clean compile -P dev

到这一步基本完事,在实际开发中涉及的环境比较多就多配置几个,这是当前项目配置的环境,好几个

image.png

结束

maven作为常用的工程化管理工具,常见的开发功能还是有必要掌握的

Maven Filter与Profile隔离生产环境与开发环境的更多相关文章

  1. 通过Maven配置测试环境和开发环境连接不同的数据库

    通过Maven配置测试环境和开发环境连接不同的数据库   作者及来源: 通灵宝玉 - 博客园    收藏到→_→: 此文来自: 马开东博客 网址:http://www.makaidong.com   ...

  2. maven(多个模块)项目 部署 开发环境 问题处理历程【异常Name jdbc is not bound in this Context 异常java.lang.NoSuchMethodE】

    maven(多个模块)项目 部署 开发环境 问题处理历程[异常Name jdbc is not bound in this Context 异常java.lang.NoSuchMethodE] 201 ...

  3. (17/24) webpack实战技巧:生产环境和开发环境并行设置,实现来回切换

    1. 概述 生产环境和开发环境所需依赖是不同: --开发依赖:就是开发中用到而发布时用不到的.在package.json里面对应的就是devDependencies下面相关配置. --生产依赖: 就是 ...

  4. 【webpack学习笔记】a06-生产环境和开发环境配置

    生产环境和开发环境的配置目标不一样,生产环境主要是让文件压缩得更小,更优化资源,改善加载时间. 而开发环境,主要是要开发更方便,更节省时间,比如调试比如自动刷新. 所以可以分开配置不同的开发环境,然后 ...

  5. Android 程序分析环境搭建-开发环境搭建

    1.1  JDK 安装 JDK 的配置,初学java 开发,那是必须会的. 下载,遇到的问题就是要注册oracle 的账号,还有你要下载特定版本,比如jdk 1.7,jdk 1.6,很难找到在哪里.解 ...

  6. Eclipse Maven profiles 多环境配置,测试环境与开发环境分开打包

    1.将开发环境.测试环境.生产环境的配置文件分开存放,如下图: 2.在Maven中配置不同的环境打包配置文件的路径,配置如下: <profiles> <profile> < ...

  7. spring boot区分生产环境和开发环境

    回顾一下spring boot使用基础,做个笔记. 通过配置文件,设置项目的开发环境和生成环境. 项目目录结构: application-dev.yml是开发环境配置文件,application-pr ...

  8. 配置动态加载模块和js分模块打包,生产环境和开发环境公共常量配置

    1. 话不多少 先上代码:  route.js  // 引用模板 分模块编译 const main = r => require.ensure([], () => r(require('. ...

  9. springboot 生产环境与开发环境配置

    通过修改yml文件里的active属性,prod(生产环境) 与 dev (开发环境)

随机推荐

  1. 远程连接Linux相关操作

    1.远程连接的步骤 编译网卡配置文件,修改onboot参数 vi /etc/sysconfig/network-scripts/ifcfg-ens33进入命令之后将onboot改成onboot=yes ...

  2. 超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述

    前言: 由于之前对STM32Fxx系列相对熟悉,所以涉及到超低功耗设备时,自然就选用STM32家族的STM32Lxx系列产品. STM32L151C8T6 功能特点: (1)Flash:64k (2) ...

  3. HAProxy+Heartbeat双节点出现VIP情况

    本文使用heartbeat做高可用,主节点192.168.0.204,备节点192.168.0.205,vip192.168.0.206,防火墙启动状态 先启动主节点,再启动备节点后,发现以下问题: ...

  4. fast

    # connect timeout in seconds# default value is 30sconnect_timeout=30 # network timeout in seconds# d ...

  5. linux运维、架构之路-正则表达式

    一.通配符的含义 符号 参数说明 其他说明 | 管道 把前一个命令结果通过管道传递给后面一个命令 ; 命令的分隔符 ll /oldboy/;cat oldboy.tx . 表示当前目录 * 匹配文本或 ...

  6. php怎么启动exe文件

    PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任.但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功 ...

  7. JS中的Date对象

    1.构造函数 Date 对象可以通过构造函数来生成,Date 的构造函数可以放入四种不同的参数 1.1.new Date() ,返回此时的本地日期时间的date对象 let d = new Date( ...

  8. 电脑如何连接windows server服务器

    第一步:win+r 启动‘运行’,输入mstsc 第二步:连接远程桌面,输入服务器ip 第三步,输入账户密码,登陆即可. 注释:mstsc,全称 Microsoft Telnet Screen Con ...

  9. (转)pycharm autopep8配置

    转:https://blog.csdn.net/BobYuan888/article/details/81943808 1.pip下载安装: 在命令行下输入以下命令安装autopep8 pip ins ...

  10. 获取响应状态Status信息、获取状态码Status Code

    一般服务器的响应状态有以下几种: 200 正常 400 未找到页面 403 拒绝 500 服务器错误 比如我们请求bootstrap中文网, 此时的状态码是200 OK表示正常,后面的from cac ...