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. PHP的学习(提前学习了,业余爱好) (一)

    一个函数一个函数地堆 strstr()函数 在本地测试的时候,代码与显示如下 1.代码: <?php echo strstr("I love Shanghai!123",&q ...

  2. Python基本语法之数据类型(总览)

    Python的八种数据类型 Number,数值类型 String,字符串,主要用于描述文本 List,列表,一个包含元素的序列 Tuple,元组,和列表类似,但其是不可变的 Set,一个包含元素的集合 ...

  3. shell脚本获取随机数

    $RANDOM系统变量 在bash中,支持$RANDOM系统变量,范围是 [0, 32767] #!/bin/bash set -e randN() { local N=$1 echo $(($RAN ...

  4. 第一章 数据库管理员(DBA)

    一.DBA的工作 1.初级:mysql基础安装.搭建 2.中级:数据库管理员DBA 1)用户管理 1.用户的权限2.用户可以操作的库或者表3.用户名和来源的主机4.用户的密码​grant all on ...

  5. 判断是否是胖子的shell脚本

    read -p "请输入身高(m为单位): " HIGH if [[ ! "$HIGH" =~ [1].?[0-9]{,2}$ ]];then echo &qu ...

  6. bzoj2539 丘比特的烦恼、黑书P333 (最优二分图匹配)

      丘比特的烦恼 题目描述 Description 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女, ...

  7. filezilla pureftpd 读取目录列表失败

    放行   21, 39000 - 40000端口

  8. 010_Java历史及特性

    目录 Java历史 C语言 1972年 C++ 1982年 Java 1995年 Applet 图形界面的程序 J2SE Java 2 标准版 桌面 J2ME Java 2 移动版 手机 J2EE J ...

  9. Pytest 系列(25)- 标记用例级别 @allure.

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 平时写测试用例也会划分优先级 ...

  10. 初识ABP vNext(12):模块的独立运行与托管

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 模块运行 动态 C# API 客户端 最后 前言 很久没更新这个系列...之前的章节中讲到ABP的模块是可以独立运行的 ...