maven profile filter 线上线下分开打包配置
maven自动选择不同的配置文件打包profile+filter
1. profile:
[要点:] activeByDefault默认激活,不用再mvn命令时指定额外参数;
[注意:] 使用非默认的配置,要在编译时指定:如,要在生产环境打包[并跳过单元测试]:
mvn clean package -Pproduct [-Dmaven.test.skip=ture]
如果mvn clean package:
a. 默认加载profile-dev.properties来打包
b. 可以替换的内容范围是:
src/main/resources/*.xml|*.properties...
src/main/java/*.xml
<project>
<build>
<finalName>project-name</finalName>
<!-- 启用filter功能为resources中的变量赋值 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
<profiles>
<!-- 1.开发环境 -->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<filters>
<filter>profile-dev.properties</filter>
</filters>
</build>
</profile>
<!-- 2.测试环境 -->
<profile>
<id>test</id>
<build>
<filters>
<filter>profile-test.properties</filter>
</filters>
</build>
</profile>
<!-- 3.UAT环境 -->
<profile>
<id>uat</id>
<build>
<filters>
<filter>profile-uat.properties</filter>
</filters>
</build>
</profile>
<!-- 4.生产环境 -->
<profile>
<id>product</id>
<build>
<filters>
<filter>profile-product.properties</filter>
</filters>
</build>
</profile>
</profiles>
</project>
2. 用法:
比如profile-dev.properties文件中定义了
mvn.mysql.url.mydb=jdbc:mysql://localhost:3306/mydb
mvn.mysql.user.mydb=root
mvn.mysql.pass.mydb=1234
那么可以在其他公用配置文件中使用${}来引用profile-dev.properties中的属性,比如:
(1). db.properties中:
db.url=${mvn.mysql.url.mydb}
db.user=${mvn.mysql.user.mydb}
db.pass=${mvn.mysql.pass.mydb}
(2) spring-ds.xml中:(用法1)
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${mvn.mysql.url.mydb}"/>
<property name="username" value="${mvn.mysql.user.mydb}"/>
<property name="password" value="${mvn.mysql.pass.mydb}"/>
</bean>
spring-ds.xml中,也可以使用这样:(用法2-引用再引用)
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${db.url}"/>
<property name="username" value="${db.user}"/>
<property name="password" value="${db.pass}"/>
</bean>
maven profile filter 线上线下分开打包配置的更多相关文章
- IT编程培训,线上线下,孰优孰劣
现在Java培训机构确实参差不齐,主要有在线培训和线下培训两大类: 1,虚拟和现实的区别:不论视觉,听觉,体验上在线教学都不如线下教学. 2,学费问 题:在线教学由于成本低,不受地域,教学设备限制一般 ...
- 配置thinkphp对mysql线上线下切换不同环境的配置 - (mysql-thinkphp) (1)
1.先打印出配置项的信息,在Index控制器下面的index->index里面设置 namespace app\index\controller; class Index { public fu ...
- 巧用PHP双$功能兼容线上线下配置文件
2014年2月8日 19:27:05 情景: 开发过程中线上和线下的配置文件中的值是不一样的 例如:线上生产环境的样式域名为ie.style.abc.com,而开发环境为ie.style.abc.ne ...
- phpstorm 实现SFTP开发,线上线下同步(实时更新代码)
https://blog.csdn.net/zz_lkw/article/details/79711746
- django 线上线下使用不同的数据库 上线:mysql 线下sqlite3 以及debug模式的开和关
hostname = socket.gethostname() 获取主机名称 import os import socket hostname = socket.gethostname() if ho ...
- git线上线下冲突
今天用git pull来更新代码,遇到了下面的问题: error: Your local changes to the following files would be overwritten by ...
- 利用maven的filter和profile实现不同环境使用不同的配制
在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停 ...
- maven profile实现多环境打包
快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev< ...
- 使用maven profile实现多环境配置相关打包
项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev 在eclipse中可以右击选项run con ...
随机推荐
- C#开启线程的四种方式
如果需要查看更多文章,请微信搜索公众号 csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! ! 1.异步委托开启线程 public class Pro ...
- SDN实验 3: Mininet 实验——测量路径的损耗率
验 3:Mininet 实验--测量路径的损耗率 一.实验目的 在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设定:初步了解 Mininet 安装时自带的 POX ...
- 【Curl】【转】curl用法!
curl基础用法! www.ruanyifeng.com/blog/2019/09/curl-reference.html
- Mybatis老手复习文档
Mybatis学习笔记 再次学习Mybatis,日后,有时间会把这个文档更新,改的越来越好,然后,改成新手老手通用的文档 1.我的认识 Mybatis 是一个持久层框架,(之前 我虽然学了这个myba ...
- pytest文档55-plugins插件开发
前言 前面一篇已经学会了使用hook函数改变pytest运行的结果,代码写在conftest.py文件,实际上就是本地的插件了. 当有一天你公司的小伙伴觉得你写的还不错,或者更多的小伙伴想要你这个功能 ...
- super函数
Python面向对象中super用法与MRO机制:https://www.cnblogs.com/chenhuabin/p/10058594.html python 中 super函数的使用:http ...
- 【C语言教程】双向链表学习总结和C语言代码实现!值得学习~
双向链表 定义 我们一开始学习的链表中各节点中都只包含一个指针(游标),且都统一指向直接后继节点,通常称这类链表为单向链表. 虽然使用单向链表能 100% 解决逻辑关系为 "一对一" ...
- ScanTailor-ScanTailor 强大的多方位的满足处理扫描图片的需求
ScanTailor 强大的多方位的满足处理扫描图片的需求 ScanTailor 能做什么? 批量或单张或选择区间旋转图片 自动切割页面,同时提供手动选项 自动识别图像歪斜角度,同时提供手动选项 ...
- CPU:Central Processing Unit
CPU执行计算任务时都需要遵从一定的规范,程序在被执行前都需要先翻译为CPU可以理解的语言.这种规范或语言就是指令集(ISA,Instruction Set Architecture). CPU 架构 ...
- poj1655 Balancing Act (dp? dfs?)
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14247 Accepted: 6026 De ...