Maven Filter与Profile隔离生产环境与开发环境
Maven Filter与Profile隔离生产环境与开发环境
在不同的开发阶段,我们一般用到不同的环境,开发阶段使用开发环境的一套东西,测试环境使用测试环境的东西,可能有多个测试环境,生产环境使用的是另外一套,生产环境要求是最严格的。
不同环境,所需要的服务器地址,数据库,缓存,配置中心等配置一般不同,如果每次切换环境都要手动修改,那就太麻烦了,好在使用Maven可以帮我们做这些事情。
介绍
- Filter: 过滤,一般配合maven resource插件使用,可以替换maven资源目录下的文本文件中变量为我们设置的值,变量使用${}包起来。
- Profile: 侧面,可以理解为某个角度,盲人摸象角度不同得出的结论也不同,配置不同的profile,就像从不同的角度看待一个东西,得出的结果不一样。在开发中指:“环境”
案例
Filter的使用
新建一个maven项目,现在IDE新建项目步骤都非常简单
在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>
现在的目录结构如下:

编译运行查看效果。
mavn clean compile

profile使用
- 上面我们可以看到,filter是生效的,但是如果只是这样用,那么功能太简单了点,所以还要加上profile.
- 修改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>
添加pro.properties,key和dev.properties中的key相同,内容如下:
maven.app.name=aihe-pro
运行查看效果,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
到这一步基本完事,在实际开发中涉及的环境比较多就多配置几个,这是当前项目配置的环境,好几个

结束
maven作为常用的工程化管理工具,常见的开发功能还是有必要掌握的
Maven Filter与Profile隔离生产环境与开发环境的更多相关文章
- 通过Maven配置测试环境和开发环境连接不同的数据库
通过Maven配置测试环境和开发环境连接不同的数据库 作者及来源: 通灵宝玉 - 博客园 收藏到→_→: 此文来自: 马开东博客 网址:http://www.makaidong.com ...
- 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 ...
- (17/24) webpack实战技巧:生产环境和开发环境并行设置,实现来回切换
1. 概述 生产环境和开发环境所需依赖是不同: --开发依赖:就是开发中用到而发布时用不到的.在package.json里面对应的就是devDependencies下面相关配置. --生产依赖: 就是 ...
- 【webpack学习笔记】a06-生产环境和开发环境配置
生产环境和开发环境的配置目标不一样,生产环境主要是让文件压缩得更小,更优化资源,改善加载时间. 而开发环境,主要是要开发更方便,更节省时间,比如调试比如自动刷新. 所以可以分开配置不同的开发环境,然后 ...
- Android 程序分析环境搭建-开发环境搭建
1.1 JDK 安装 JDK 的配置,初学java 开发,那是必须会的. 下载,遇到的问题就是要注册oracle 的账号,还有你要下载特定版本,比如jdk 1.7,jdk 1.6,很难找到在哪里.解 ...
- Eclipse Maven profiles 多环境配置,测试环境与开发环境分开打包
1.将开发环境.测试环境.生产环境的配置文件分开存放,如下图: 2.在Maven中配置不同的环境打包配置文件的路径,配置如下: <profiles> <profile> < ...
- spring boot区分生产环境和开发环境
回顾一下spring boot使用基础,做个笔记. 通过配置文件,设置项目的开发环境和生成环境. 项目目录结构: application-dev.yml是开发环境配置文件,application-pr ...
- 配置动态加载模块和js分模块打包,生产环境和开发环境公共常量配置
1. 话不多少 先上代码: route.js // 引用模板 分模块编译 const main = r => require.ensure([], () => r(require('. ...
- springboot 生产环境与开发环境配置
通过修改yml文件里的active属性,prod(生产环境) 与 dev (开发环境)
随机推荐
- bzoj5015 [Snoi2017]礼物 矩阵快速幂+二项式展开
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5015 题解 设 \(f_i\) 表示第 \(i\) 个朋友的礼物,\(s_i\) 表示从 \( ...
- CSS中用 opacity、visibility、display 属性将 元素隐藏 的 对比分析
说明 opacity 用来设置透明度 display 定义建立布局时元素生成的显示框类型 visibility 用来设置元素是否可见. opacity.visibility.display 这三个属性 ...
- vue中怎么使用vuex
做一个简单的vuex如何使用的介绍: 先安装: npm i vuex --save-dev 新建一个store文件夹, 在store文件夹中建一个index.js文件,在该文件中: i ...
- c++11 默认函数的控制
1. 类与默认函数: C++中声明自定义的类,编译器会默认生成未定义的成员函数: 构造函数 拷贝构造函数 拷贝赋值函数(operator=) 移动构造函数 移动拷贝函数 析构函数 编译器还会提供全局默 ...
- Oulipo (poj3461
Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29759 Accepted: 11986 Descript ...
- 问题记录-java图片验证码显示乱码
部署机器 操作系统:centos 7 java版本: java version "1.7.0_80" 问题症状 将一个java web的程序部署到了两台配置相同的服务器上之后(服务 ...
- [CSP-S模拟测试]:神炎皇(数学)
题目描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对$(a,b)$,若满足$a+b\leqslant n$且$a+b$是$ab$的因子,则称为神奇的数对.请问这样的数对共有多少呢? ...
- content is not supported outside 'script" or asp content' region
https://stackoverflow.com/questions/48915080/asp-net-content-is-not-supported-outside-the-script-or- ...
- .Net-WCF-图书:《WCF编程》
ylbtech-.Net-WCF-图书:<WCF编程> <WCF编程>是2008年1月机械工业出版社出版的图书,作者是Juval Lowy.Clemens Vasters. 1 ...
- Js定义一个表单并提交
Js定义一个表单 var form = $("<form>"); //定义一个form表单 form.attr('style', 'display:none'); // ...