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 线上线下分开打包配置的更多相关文章

  1. IT编程培训,线上线下,孰优孰劣

    现在Java培训机构确实参差不齐,主要有在线培训和线下培训两大类: 1,虚拟和现实的区别:不论视觉,听觉,体验上在线教学都不如线下教学. 2,学费问 题:在线教学由于成本低,不受地域,教学设备限制一般 ...

  2. 配置thinkphp对mysql线上线下切换不同环境的配置 - (mysql-thinkphp) (1)

    1.先打印出配置项的信息,在Index控制器下面的index->index里面设置 namespace app\index\controller; class Index { public fu ...

  3. 巧用PHP双$功能兼容线上线下配置文件

    2014年2月8日 19:27:05 情景: 开发过程中线上和线下的配置文件中的值是不一样的 例如:线上生产环境的样式域名为ie.style.abc.com,而开发环境为ie.style.abc.ne ...

  4. phpstorm 实现SFTP开发,线上线下同步(实时更新代码)

    https://blog.csdn.net/zz_lkw/article/details/79711746

  5. django 线上线下使用不同的数据库 上线:mysql 线下sqlite3 以及debug模式的开和关

    hostname = socket.gethostname() 获取主机名称 import os import socket hostname = socket.gethostname() if ho ...

  6. git线上线下冲突

    今天用git pull来更新代码,遇到了下面的问题: error: Your local changes to the following files would be overwritten by ...

  7. 利用maven的filter和profile实现不同环境使用不同的配制

    在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停 ...

  8. maven profile实现多环境打包

    快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev< ...

  9. 使用maven profile实现多环境配置相关打包

    项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev 在eclipse中可以右击选项run con ...

随机推荐

  1. Hello World -- 第一篇博客 -- 活着的意义

    今年注定是不寻常的一年,因为技术,接触了许多大牛.通过一篇篇博文,看到了大牛们勤奋好学.孜孜不倦的精神,于是决定也开个博客,向大牛学习. 博客开了,写点什么呢?奈何肚子里墨水不多,吐出来也多是白沫,不 ...

  2. Redis GEO 功能使用场景

    本文来源:https://www.dazhuanlan.com/2020/02/05/5e3a0a3110649/ 背景 前段时间自己在做附近直播相关业务,其中有一个核心的点就是检索用户附近的主播,也 ...

  3. Mac 每次都要执行source ~/.bash_profile 后,配置的环境变量才生效

    问题: 自己在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效.需要重新执行 : $source ~/.bash_profile后,才会生效. 原因: 自己是在bas ...

  4. 串口wifi

    串口wifi 串口WiFi ZLAN7146是一款wifi转串口的wifi串口服务器.该串口服务器可以方便地使得串口设备连接到WIFI无线网络,实现串口设备的无线化网络升级.RS232接口支持全双工. ...

  5. openresty上安装waf

    一,查看openresty的当前版本 [root@localhost luacache]# /usr/local/openresty/bin/openresty -V nginx version: o ...

  6. 理解 PHP 依赖注入 和 控制反转

    理解 PHP 依赖注入 和 控制反转   要想理解 PHP 依赖注入 和 控制反转 两个概念,就必须搞清楚如下的两个问题: DI -- Dependency Injection 依赖注入 IoC -- ...

  7. 赋予楼宇“智慧大脑”:厦门双子塔3D可视化

    前言 今年10月7日,是国务院批准设立厦门经济特区40周年纪念日.1980年的这一天,国务院正式批复同意在厦门湖里地区划出一块2.5平方公里的土地,设立经济特区.厦门,成为中国最早设立的四个经济特区之 ...

  8. 通过命令行上传ipa到appstore

    搞持续集成自动化打包上传到appstore遇到这个问题,记录一下. 其实主要就一条到命令: xcrun altool --upload-app -f xxxx.ipa -u "yanqizh ...

  9. vue中跳转页面逻辑

    跳转详情页面具体代码 写这个页面需要安装两个 1.安装axios命令 Cnpm install axios --save 2.安装vant Cnpm install vant --save 在inde ...

  10. Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互

    引言 在与实现了语音合成.语义分析.机器翻译等算法的后端交互时,页面可以设计成更为人性化.亲切的方式.我们采用类似于聊天对话的实现,效果如下: 智能客服(输入文本,返回引擎处理后的文本结果) 语音合成 ...