Maven项目多环境之间的配置文件的切换
- 前言:对于一个项目,开发和生产环境之间会使用不同的配置文件,最简单的例子就是数据库连接池的配置了。当然,可以在打包上线前对配置文件进行替换,不过这也太low了吧。
简单的pom.xml中的配置内容
- 比如我们在maven项目中引入了内嵌式的tomcat插件(当然打包方式是要war包),如下代码
<!--在build标签中-->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 指定端口 -->
<port>8821</port>
<!-- 请求路径 -->
<path>/</path>
</configuration>
</plugin>
<plugins>

指定了端口号是8821,启动项目后(在idea右边的maven project),就可以使用8821端口访问。

8821是我们开发的端口,如果我们想打包上传到服务器,然后就修改这个端口为8891。
- 首先在pom.xml使用properties标签来定义端口号

- 然后就创建多个环境,多个环境对tomcat_port这个属性进行定义
<!--和build平级-->
<profiles>
<profile>
<!--开发环境,这个id就是名称-->
<id>dev</id>
<properties>
<!--这个标签就是定义你要设定的properties中的属性-->
<tomcat_port>8821</tomcat_port>
</properties>
</profile>
<profile>
<!--生产环境-->
<id>pro</id>
<properties>
<tomcat_port>8821</tomcat_port>
</properties>
</profile>
</profiles>
- 然后修改我们的tomcat7系列的maven命令,在后边添加参数:
-P 环境id,在idea中,右键这个maven命令,就可以设置了


设置完后,点击运行,

除了tomcat:run 外,其他的maven命令,如:
package -P dev
install -P pro
这些都是可以的。
不同环境下使用不同的数据库配置文件
和上边的方法类似,不同的是它会引入项目中的properties配置文件
- 首先,src/main/resources下创建dbprops文件夹,在这个文件夹下创建一个db_dev.properties,内容如下:
#这个env前缀可以自定义,也可以不用
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/tb_dev?characterEncoding=utf-8
env.jdbc.username=dev
env.jdbc.password=dev
也创建一个db_pro.properties
#这个env前缀可以自定义,也可以不用
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/tb_pro?characterEncoding=utf-8
env.jdbc.username=pro
env.jdbc.password=pro
- 然后,修改我们src/main/resources下的db.properties配置文件,这个配置文件就是我们之前的数据库连接配置文件(因为datasource中指定的路径就是这个配置文件)
#之前写的是确定的地址,这回就使用变量
jdbc.driver=${env.jdbc.driver}
jdbc.url=${env.jdbc.url}
jdbc.username=${env.jdbc.username}
jdbc.password=${env.jdbc.password}
- 在pom.xml中添加属性
<properties>
<!--这个db_env是自定义的,随便起-->
<db_env>dev</db_env>
</properties>
- 在pom.xml中定义profile
<profiles>
<profile>
<!--环境名-->
<id>dev</id>
<properties>
<!--这个名要和之前定义的db_dev.properties中的dev相同,下边会看到拼接-->
<db_env>dev</db_env>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<db_env>pro</db_env>
</properties>
</profile>
</profiles>
- 在build标签中添加一个filters和resource指令
<filters>
<filter>src/main/resources/dbprops/db_${db_env}.properties</filter>
</filters>
<resources>
<resource>
<!--这是拦截这个目录下的配置文件,进行处理-->
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
好了,我们这使用指定打包
package -P pro
然后用触压生成的war包,打开WEB-INF\classes\db.properties文件可以看到
Maven项目多环境之间的配置文件的切换的更多相关文章
- Java项目和maven项目中如何获取&设置配置文件中的属性
通常情况下,我们会在一些配置文件文件中配置一些属性.如: indexPath = E\:\\Tomcat_7.0\\webapps\\ipost_stage\\lucene\\index imgUpl ...
- [maven] 项目不同环境自动打包
应用背景 项目需要发布到本地环境,测试环境和生产环境甚至不同的生产环境上.这时候配置文件的一些参数需要被频繁的修改来修改去.为了解决这样的繁琐工作,就得使用maven profile特性. 步骤 1. ...
- Maven根据不同环境打包不同配置文件
开发项目时会遇到这个问题:开发环境,测试环境,生产环境的配置文件不同,打包时经常要手动更改配置文件,更改的少还可以接受,但是如果需要更多个配置文件,手动的方法就显得非常笨重了. 下面介绍一种方法,利用 ...
- eclipse 新建 maven 项目 添加 spring hibernate 的配置文件 详情
主要配置文件 pom.xml 项目的maven 配置文件 管理项目所需 jar 依赖支持 web.xml 项目的总 配置文件 :添加 spring和hibernate 支持 applicationC ...
- maven项目多环境打包问题
1.xxx-api是基于springboot的模块 2.配置文件 application.properties spring.profiles.active=@activeEnv@ applicati ...
- 导入maven项目各个注解均报错了
所遇问题: 导入maven项目各个注解均报错了; 思考1: 这个项目使用了springboot;spring是个”大容器”,所有对象的创建和管理都交给了它, (SpringBoot是一个框架,一种全新 ...
- Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】
前言 因今年公司新产品线较多,为了降低耦合,达到业务分离.重用,提高内部开发效率的目的,采用了基于服务组件.前后端分离的架构体系.与之前传统单应用架构相比,系统部署.配置更加复杂,为了能够频繁地将软件 ...
- eclipse 构建从 SVN 上下载的可识别的 maven 项目
从 SVN 上下载的 maven 项目中含有父项目,属于 maven 的嵌套,每个子项目和父项目虽有 pom.xml 文件,在结构上也是 maven 然而并不是 eclipse 识别的 maven 项 ...
- Spring boot项目分环境Maven打包,动态配置文件,动态配置项目
Spring boot Maven 项目打包 使用Maven 实现多环境 test dev prod 打包 项目的结构 在下图中可用看出,我们打包时各个环境需要分开,采用 application-环境 ...
随机推荐
- Django学习day1——Django的简单介绍
1.了解Web基本的开发 使用Python开发Web,最简单,原始和直接的办法是使用CGI标准现在从应用角度解释它是如何工作: 首先做一个Python脚本,输出HTML代码,然后保存成.cgi扩展名的 ...
- 表格导出到excel的样式消失该如何修改
工作中遇到一需求,要将后台的表格导出到excel后的表格样式该如何修改呢? 其实表格导出首先需要了解两个插件:jquery.table2excel.js和tableExport.js 1.第一步,写一 ...
- day 2 上午 消失之物 背包
#include<iostream> using namespace std; long long n,m; ]; ]; ]; int main() { cin>>n>& ...
- rpm 方式安装java
1.rpm下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.如果有安装openjdk 则卸载 #### ...
- php如何在mysql里批量插入数据
假如说我有这样一个表,我想往这个表里面插入大量数据 CREATE TABLE IF NOT EXISTS `user_info` ( `id` int(11) NOT NULL AUTO_INCREM ...
- 易语言 史诗级Json处理 烁_Json模块!!!!
大家好,我是键盘上的魔手 * “************************”* “** 欢迎使用烁Json模块 **”* “** 作者:键盘上的魔手 **”* “** 微信号:codervip ...
- Nginx Linux和Windows安装教程
前言 本篇文章主要介绍的是Nginx Linux环境和Windows的安装教程. Nginx 介绍 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Syso ...
- 前端小白在asp.net core mvc中使用ECharts
对于在浏览器中绘制图形图表,目前有较多的js类库可以使用,如:ChartJS,Flot,canvasjs等,但是今天介绍的主角为国产图表库,并在apache孵化,就是大名鼎鼎的echarts. 前方高 ...
- nyoj 199-无线网络覆盖 (ceil())
199-无线网络覆盖 内存限制:64MB 时间限制:3000ms 特判: No 通过数:4 提交数:13 难度:3 题目描述: 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆 ...
- 创建sql自定义的函数及商品分页sql存储过程
--商品筛选时判断品牌ID是否存在 --select dbo.isValite(94,94)create function isValite(@brandId int,@bId int)returns ...
