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-环境 ...
随机推荐
- Netty学习篇④-心跳机制及断线重连
心跳检测 前言 客户端和服务端的连接属于socket连接,也属于长连接,往往会存在客户端在连接了服务端之后就没有任何操作了,但还是占用了一个连接:当越来越多类似的客户端出现就会浪费很多连接,netty ...
- 监控tomcat,自动启动
tomcatID=`ps -ef |grep tomcat |grep -v 'grep'|awk '{print $2}'` tomcatCount=`ps -ef|grep tomcat |gr ...
- group:状压dp,轮廓线
神仙题.但是难得的傻孩子cbx没有喊题解,所以也就难得的自己想出来了一个如此神仙的题. 如果是自己想的,说它神仙是不是有点不合适啊..? 反正的确不好像.关键就在于这个标签.颓完标签就差不多会了. % ...
- 放棋子:组合数/dp/容斥原理
题目传送门 啊又是一个考场上没拿到的水题,差一步!! 组合数,先打个杨辉三角吧. 显然棋子应该一种一种的放,这很dp. 而且棋子一旦放下,那么它所在的行列就只能放这种颜色的棋子了. 设dp[i][x] ...
- 网站安全配置Nginx防止网站被攻击
https://blog.csdn.net/u011078940/article/details/51426288
- windows下安装nginx和基本配置
1.下载并安装nginx 到nginx官网上下载相应的安装包,http://nginx.org/en/download.html: 下载之后进行解压,将解压后的文件放到自己心仪的目录下,如下图所示: ...
- linux中dd相关命令骚操作
一.dd如何快速将磁盘写满 方法一: dd if=/dev/zero of=/tmp/file bs=1G count=10 # 参数解释 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件 ...
- hdu 2647 Reward (topsort)
RewardTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 100天搞定机器学习|Day56 随机森林工作原理及调参实战(信用卡欺诈预测)
本文是对100天搞定机器学习|Day33-34 随机森林的补充 前文对随机森林的概念.工作原理.使用方法做了简单介绍,并提供了分类和回归的实例. 本期我们重点讲一下: 1.集成学习.Bagging和随 ...
- django_0:项目流程
1.django-admin(.py) startproject mysite——创建项目project 得到__init__.py(说明工程以包结构存在) settings.py(当前工程的一些配置 ...