SpringBoot:favicon.ico打包后无法显示

问题描述

最近在开发一个服务时候,需要将服务与前端页面整合到spring boot包中。于是,将打包后的静态文件放入src/resource/static中,其中包括favicon.ico文件。
在本地运行时候发现favicon.ico无法显示,查看开发者控制台发现请求是返回200的状态码,说明文件是存在的。然后进入到src/resource/static中发现favicon.ico也是能正常显示的。一开始以为是不是spring boot对该文件做了什么限制,搜索了一番,好像不是spring boot的限制。这时候,我想到了打包后的文件是不是有文件,于是在idea中打开了target下面的static目录,打开ico文件发现确实是无法显示。
在这里插入图片描述


原因分析:

顺着上面的发现,我将问题定位到了打包上,于是打开了pom.xml文件,在最后面build标签中有这样一段配置:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>

由于之前也是借用公司的模板,所以这段配置没有细看,查看资料后发现这块的配置主要用于资源过滤,即在构建过程中,将资源文件中的占位符(如 ${property.name})替换为实际值的过程。然而这样的配置是对所有文件都起作用,像favicon.ico这样的二进制文件也会做了一些特殊的过来处理,插入了额外的信息,导致最终打包后的文件打开异常。


解决方案:

修改pom.xml中的打包配置,过滤静态文件夹,不对该文件夹下的文件进行过滤。配置完后,删除target下的文件重新打包。

<resources>
     <!-- 1. 配置文件:需要过滤,排除 static -->
     <resource>
         <directory>src/main/resources</directory>
         <filtering>true</filtering>
         <excludes>
             <exclude>static/**</exclude>
         </excludes>
     </resource>
     <!-- 2. 静态资源:不需要过滤,但要包含 -->
     <resource>
         <directory>src/main/resources</directory>
         <filtering>false</filtering>
         <includes>
             <include>static/**</include>
         </includes>
     </resource>
 </resources>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值