springboot项目创建笔记31 之《maven-assembly-plugin打包,二进制文件损坏问题》

本文探讨了在Maven项目中,由于在assembly.xml中设置了filtered为true导致打包后静态资源如字体、图片无法使用的问题。filtered属性用于过滤资源配置,但会对二进制文件造成破坏,增加无效字符,增大文件大小。解决办法是将filtered设为false,或者针对二进制文件创建单独的fileSet。了解这一问题对于正确配置Maven打包过程至关重要。
摘要由CSDN通过智能技术生成

1、问题:
一个项目发现打包后,static目录下的字体、图片都无法使用,对比了打包前和打包后文件大小:

可以看到左边打包后,大小明显变大。

2、原因是assembly.xml设置了:
<filtered>true</filtered>

<fileSets>
<!-- 将代码目录/src/main/resources下的文件,复制到输出目录的config内 -->
<fileSet>
	<directory>${basedir}/src/main/resources</directory>
	<includes>
		......
	</includes>
	<filtered>true</filtered>
	<outputDirectory>${file.separator}config</outputDirectory>
</fileSet>

filtered作用是过滤配置文件中的资源,替换占位符。过滤时会用utf-8编码读取文件。
所以遇到打包二进制文件,就会破坏文件内容,导致无法使用。
打包二进制文件时,无效编码会自动替换成ef bf bd。所以文件容量会变大。 

3、解决办法
将filtered设置为false,或者为二进制文件单独使用fileSet

参考资料:
maven-assembly-plugin打包,二进制文件损坏问题 - 简书
maven-dependency-plugin以二进制模式解压缩文件-Java 学习之路
maven编译后资源文件内容发生变更问题随记_周绍禹-whuiss-CSDN博客
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值