当前位置: 首页 > news >正文

maven Filtering true 作用

每个项目都会有多套运行环境(开发,测试,正式等等),不同的环境配置也不尽相同(如jdbc.url),借助Jenkins和自动部署提供的便利,我们可以把不同环境的配置文件单独抽离出来,打完包后用对应环境的配置文件替换打包后的文件,其实maven已经给我们提供了替换方案:profile + filtering

Filtering

Filtering 是 maven 的 resource 插件 提供的功能,作用是用环境变量、pom文件里定义的属性和指定配置文件里的属性替换属性(*.properties)文件里的占位符(${jdbc.url}),具体使用如下:
src/main/resources目录有个配置文件jdbc.properties,内容如下:

jdbc.url=${pom.jdbc.url}
jdbc.username=${pom.jdbc.username}
jdbc.passworkd=${pom.jdbc.password}

配置 resource 插件,启用filtering功能并添加属性到pom:

<project>
    ...
    <!-- 用pom里定义的属性做替换 -->    
    <properties>
        <pom.jdbc.url>jdbc:mysql://127.0.0.1:3306/dev</pom.jdbc.url>
        <pom.jdbc.username>root</pom.jdbc.username>
        <pom.jdbc.password>123456</pom.jdbc.password>
    </properties>
    <build>
      ...
        <!-- 可以把属性写到文件里,用属性文件里定义的属性做替换 -->
        <filters>
            <filter>src/main/filters.properties</filter>
        </filters>
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
          </resource>
        </resources>
        ...
    </build>
    ...
</project>

编译包后target目录下的jdbc.properties:

jdbc.url=jdbc:mysql://127.0.0.1:3306/dev
jdbc.username=root
jdbc.passworkd=123456

转载

使用 Maven Profile 和 Filtering 打各种环境的包 - SegmentFault 思否
https://segmentfault.com/a/1190000003908040 

相关文章:

  • mysql sql语句创建一个简单表
  • 禁止 Apache 默认显示网站目录结构 的方法
  • Typecho Fatal error: Using $this when n...
  • 启用CDN 出现pjax动画失效问题 的解决方法
  • Typecho 配置使用 腾讯CDN服务 的简单教程
  • WWW-Basics (HTTP, Training) 最完整的做法
  • Genymotion 拖入apk 提示 invalid filename
  • 屏蔽 手机QQ黄钻官方团队总送礼物 的简单方法
  • 解决 ubuntu18 打开谷歌浏览器时需要输入密码
  • mybatis parametertype可以不填么
  • failed to save password error code -34018
  • Tyecho 完美配置评论回复邮件提醒 的简单方法
  • Ubuntu18.04 用一条命令 快速安装 FBReader
  • 给 Typecho博客 配置PJAX无刷新访问的 教程
  • MySQL II (MySQL, Exploit, Training)简单解法
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • ERLANG 网工修炼笔记 ---- UDP
  • Git同步原始仓库到Fork仓库中
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JS笔记四:作用域、变量(函数)提升
  • Laravel 菜鸟晋级之路
  • Mocha测试初探
  • MySQL数据库运维之数据恢复
  • Spring Cloud中负载均衡器概览
  • vue-cli在webpack的配置文件探究
  • VuePress 静态网站生成
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 从零开始的无人驾驶 1
  • 关于Flux,Vuex,Redux的思考
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 开源地图数据可视化库——mapnik
  • 线上 python http server profile 实践
  • 智能合约开发环境搭建及Hello World合约
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • # Maven错误Error executing Maven
  • #ifdef 的技巧用法
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (03)光刻——半导体电路的绘制
  • (07)Hive——窗口函数详解
  • (SpringBoot)第七章:SpringBoot日志文件
  • (初研) Sentence-embedding fine-tune notebook
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)汇编语言——简单程序
  • (转)LINQ之路
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .bat批处理出现中文乱码的情况
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core 连接数据库,通过数据库生成Modell
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET的数据绑定