博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):
Maven的filtering和profile标签使用

使用Maven 将项目分版
前言

每个项目通常都会用不同的配置文件对应不同的版本,例如开发版和上线版本的配置通常会是不同的。此时就会产生一个问题,当项目需要从开发版切换到上线版时,总是会避免不了更改很多配置项,或者切换配置文件,但是不管哪一种都不方便配置。使用Maven就可以很方便的帮助我们应对这种问题,本文就简单介绍一下使用方法。

resources属性

这个属性就是指定构建项目时需要将哪些配置文件打包,其本身包含很多子标签,这里就不一一介绍了,只介绍相关的。其中include就是指定需要包含在最终项目中的资源。

<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>*.properties</include><include>*.xml</include></includes>
</resource>

在上面的resource标签意思是将src/main/java/下的文件夹及其子文件夹的xml文件在编译时包含在最终工程中。这个配置可以解决mybatis的将mapper接口和mapper.xml放在同一个文件夹下找不到mapper的问题。

下面的resource标签是本文重点要介绍的。其含义是扫描src/main/resources/下的所有properties和xml文件将其中的${}引用在打包时换成直接引用。filtering标签的作用就是这个。

示例

上图为本次示例的项目结构,dev.properties对应开发版配置,prod.properties对应上线版配置。

#prod.properties
#database
jdbc.mysql.url=jdbc:mysql://localhost:3306/car?useUnicode=true&characterEncoding=UTF-8
jdbc.mysql.driver=com.mysql.jdbc.Driver
jdbc.mysql.user=guojing
jdbc.mysql.password=huangrong
#config.properties
#database
jdbc.url=${jdbc.mysql.url}
jdbc.driver=${jdbc.mysql.driver}
jdbc.user=${jdbc.mysql.user}
jdbc.password=${jdbc.mysql.password}

通过profile标签使上线版配置文件生效

<profiles><profile><id>dev</id><build><filters><filter>src/main/resources/filters/dev.properties</filter></filters></build></profile><profile><id>prod</id><activation> <!-- 这里是关键,让这个版本默认激活 --><activeByDefault>true</activeByDefault></activation><build><filters> <!--过滤时采用的过滤文件为--><filter>src/main/resources/filters/prod.properties</filter></filters></build></profile>
</profiles>


Maven | filtering,filter和profile标签使用相关推荐

  1. Maven学习(十四)profile标签

    Maven学习(十四)profile标签 1.profile概述 ①单词释义 ②项目的不同运行环境 ②默认profile 2.profile配置 ①外部视角:配置文件 ②内部实现:具体标签 [1]pr ...

  2. myecplise新建Maven项目Filter选什么,使用myeclipse建立maven项目

    myecplise新建Maven项目Filter选什么 使用myeclipse建立maven项目   1 2 3 4 5 6 7 分步阅读 maven是管理项目的,myeclipse是编写代码的.第一 ...

  3. Maven 依赖管理与依赖标签

    原文链接 1.概述 在本教程中,我们将回顾两个重要的Maven标签--dependencyManagement 和 dependencies. 这些特性对于多模块项目特别有用. 我们将回顾这两个标签的 ...

  4. maven中强大的scope标签详解

    maven中强大的scope标签详解 本文目的   接上一篇maven的版本号version的总结及理解   当我在封装工具jar包的时候,发现有些依赖,是一定要在工具代码里使用的,比如我做的工具包里 ...

  5. Maven Assembly插件 使用与标签介绍

    Maven Assembly插件 使用与标签介绍 一.介绍 Assembly 插件的主要作用是,允许用户将项目输出与它的依赖项.模块.站点文档.和其他文件一起组装成一个可分发的归档文件. 二.常见的m ...

  6. Maven Filtering和Profile

    Filtering Filtering是resource插件的功能,作用是将资源文件中的占位符替换成对应的值,如下图所示: 使用注意 启用resource插件的filtering功能: 设定资源文件的 ...

  7. Maven — maven filtering OTS parsing error incorrect file size in WOFF head 产生原因及两种解决方案

    背景说明 前端静态资源文件放在后端SpringBoot项目resources文件夹下,多环境打包后前端页面出现了图标及文字未按预期样式显示的情况,查看浏览器控制台发现出现如下错误. OTS parsi ...

  8. maven POM.xml内的标签大全详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. maven(一 基本操作 命令 标签)

    原来一直没有使用maven 小公司,只是听说过这个东西,我没事就喜欢 去学习一些新东西.maven学了几次,但是 没有用上  所以 最后还是忘记了,或者说不知道怎么使用maven,一年半以前公司 改革 ...

最新文章

  1. python分组聚合显示全部列_python – pandas:如何按多列分组并在多列上执行不同的聚合?...
  2. xx学OD -- 消息断点 RUN跟踪(下)
  3. 政企多样化发力 社区半径引领智慧社区生态建设
  4. ajax使用教程_AJAX教程:什么是AJAX以及如何使用它
  5. qt glsl渲染rgb
  6. js获取地址栏url以及获取url参数
  7. 软件工程课堂练习购买图书
  8. 窄带物联网技术有望终结碎片化现状
  9. 【学习0605】NVIDIA DRIVE AGX Developer Kit - How to set up
  10. C# 通用树形数据结构
  11. 置换元素和非置换元素
  12. 用matlab制作证件照,美图秀秀证件照制作方法图文教程
  13. Asp.Net Mvc基于Fleck开发的多人网页版即时聊天室
  14. 什么牌子的洗地机最适合家用?洗地机品牌排行榜前十名推荐
  15. GDOI2020爆蛋记
  16. Guass列选主元消去法和三角分解法
  17. 运行中的线程如何停止?
  18. 【龙印】用龙芯1c实现3D打印机的总体思路
  19. 重学java——套娃
  20. 《Python程序设计》python常用的格式转换

热门文章

  1. [原创]TenJi Game-线下玩法技巧
  2. 非递归前序遍历二叉树,非递归中序遍历二叉树,非递归后续遍历二叉树
  3. c语言程序2000行代码,C语言教务管理系统2000行代码
  4. YUV数据格式与YUV_420_888
  5. RDP服务针对性攻击、钓鱼邮件攻击和勒索病毒家族Phobos研究
  6. ja-netfilter-all,IntelliJ IDEA 2021.3.2 (Ultimate Edition)
  7. 关于打包处理less文件时遇见的问题:
  8. RTL8723BU wifi 及 热点移植和测试
  9. Jmeter 中断言操作
  10. Python pip 常用命令