小记配置 maven-assembly-plugin 误修改文件内容导致证书异常

开发银联支付功能,本地功能全部跑通,部署到测试环境报证书签名错误。 进一步可以看到 FileInputStream 读文件时抛出异常:

java.io.IOException: DER length more than 4 bytes: 111

一番追溯,最终 diff file 才发现证书文件 51offer_unionpay.pfx 服务器上与本地并不一致,竟然是 maven 打包时出的问题。

项目 maven 打包时用的是 maven-assembly-plugin (留意 maven-resources-plugin 也存在类似的问题) 证书文件的打包配置如下:

<fileSet>
    <directory>src/main/resources/assets</directory>
    <outputDirectory>conf/META-INF/assets</outputDirectory>
    <includes>
        <include>**/*.*</include>
    </includes>
    <filtered>true</filtered>
</fileSet>

留意 <filtered>true</filtered> 这行配置。 这是 maven-assembly-plugin 从 pom 配置 properties 变量所用的配置,在证书文件这个场景并不需要。 maven-assembly-plugin 自作多情的过滤读写了证书文件,却没能正确处理文件自身的内容,导致了这个问题。

解决也很简单:改为<filtered>false</filtered> 提交重新发布,问题解决。

总结

  • 调试时留意报错细节,问题偶尔也会发生在你完全想不到的地方。
  • 配置也要力求精简,不要引入无关内容,拖泥带水只会给自己挖坑。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容