美文网首页程序员
记一次Maven的profile文件过滤引起的字符编码BUG

记一次Maven的profile文件过滤引起的字符编码BUG

作者: 飞来来 | 来源:发表于2017-11-26 00:13 被阅读222次

本文记录了一次文件编码差异引起的profile替换占位符失败的bug,及处理思路。记录成文,以便以后反思,或让后来遇到问题的同学能有据可循。

起因及bug描述

相信大家对于Maven中打包不同环境使用不同profile文件的做法已经很熟悉了。我所在的项目分了好多个profile,每个profile对应不同的properties,如下图:


多个properties

在开发的过程中,出现其中某几个properties编译打包出来的工程,占位符没有被替换,但是其他的properties则没有问题。war包中的配置文件中还是会有${xxx.xxx.xxx}的字符。


多个properties

处理思路

  • 首先排除了编码失误,字符写错等等初级错误
  • 然后我怀疑是maven-resources-plugin插件在filter的过程中出现字符的问题,这个想法是由于在Maven的resource打包过程中,触发resources的filter操作的插件就是maven-resources-plugin,所以出问题一定是在这个插件的工作过程中,查看Maven的package过程日志,如下图:
    maven-resources-plugin的工作日志

日志提示使用UTF-8的编码格式,拷贝了16个经过filter操作的resource文件。然后排除了properties文件中的中文干扰,但是依然没有解决问题,Maven打包后依然是那几个properties没有有效的替换占位符。

  • 暂时没有其他解决思路,只能逐字逐字的对比能成功替换占位符的properties和不能成功替换占位符的properties。还用上了各种对比工具。结局依然是没有发现什么异常的地方。
文件字符的对比
  • 确定字符没问题后,怀疑是文件本身的问题。复制正常和异常两种properties文件,修改名字,修改properties里面的内容信息。打包测试。测试的结果是,能正常替换占位符的properties复制出来的都能够正常替换占位符,反之不能正确替换占位符的properties复制出来的都不能正常替换占位符。由此可见,这两个properties可能在存档的时候就存在差异。从IDE里复制异常的properties中的字符,到记事本里保存到本地,果然是存档时的编码有问题,而IDE没有提示这个问题。
异常的字符
  • 最后替换了有异常编码的字符,就能成功打包替换了。

小结

在排除了大部分低级错误后,不要盲目进行没有必要的盲目测试,投石问路虽然是不错的方法,但是在排除bug时,一步一步的投石问路未免太过耗时。比方说在这次的bug解决中,在排除了大部分低级错误后,不应盲目进行测试,妄图以此找到解决问题的办法,而应该站在更高层次的角度来看待问题出现的缘由。所以在以后的编码学习过程中,应该加强自己的逻辑思维能力,提高分析解决问题的能力。

相关文章

  • 记一次Maven的profile文件过滤引起的字符编码BUG

    本文记录了一次文件编码差异引起的profile替换占位符失败的bug,及处理思路。记录成文,以便以后反思,或让后来...

  • maven---灵活构建(一)

    包含内容 maven属性 构建环境的差异 资源过滤 Maven Profile Web资源过滤 在profile中...

  • 2018-03-29

    Java中常用的字符编码控制过滤器和用户登录状态过滤器 (1)字符编码控制过滤器-EncodingFilter (...

  • ios 对URL字符串编解码

    1,解码: 2,编码 3,过滤掉特殊字符编码

  • Jenkins

    一 Maven安装 编辑 /etc/profile,增加 使文件生效source /etc/profile 二 启...

  • Maven灵活构建

    Maven为了支持构建的灵活性,内置了3大特性,即:属性、Profile和资源过滤。 6.1 Maven属性 Ma...

  • maven profile filter 线上线下分开打包配置

    maven自动选择不同的配置文件打包profile+filter 1. profile: 如果mvn clean ...

  • Python-文件操作

    字符编码 文件操作 基础读 基础写 with语法 操作模式 游标操作 文件的遍历 字符编码: 三种字符串: 文件操...

  • springboot多环境配置打jar包

    一、配置 maven profile的定义pom.wxl 配置文件目录 resources因为使用了maven p...

  • icu4j解决获取文件编码问题

    记一次项目中遇到的坑。线上系统有解析CSV与txt文本文件的需求,文本文件包含中文,同时文件的字符编码无法统一,自...

网友评论

    本文标题:记一次Maven的profile文件过滤引起的字符编码BUG

    本文链接:https://www.haomeiwen.com/subject/japhbxtx.html