Failed to decode downloaded font之Maven resource 配置中include与exclude及其filter的使用

一、问题起因

服务启动后,访问流程页面发现有些图标显示方块,鼠标右键 查看console显示如下:
在这里插入图片描述

Failed to decode downloaded font(线上环境字体图标不显示)

于是开始排查,发现是pom文件 打包将字体文件给处理了,原始pom文件如下:

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.json</include>
            <include>**/*.properties</include>
            <include>**/*.yml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
    <!--配置处理了src/main/resources下的所有文件,所以resources目录下font文件也被处理了,于是需要排除这几个文件-->
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
<filters>
    <filter>src/main/resources/config/${profiles.active}.properties</filter>
</filters>

修改配置如下:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
            <exclude>static/fonts/**</exclude>
        </excludes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
            <include>static/fonts/**</include>
        </includes>
    </resource>
</resources>
<filters>
    <filter>src/main/resources/config/${profiles.active}.properties</filter>
</filters>

第1个resource表示: 需要过滤除了 static/fonts/**的文件 作为资源文件,并配置了filter 需要处理它们。
但是static/fonts/**下的文件必须也作为资源文件,于是又配置了下面resources表示:
static/fonts/**下的文件是资源文件,并配置了fileter不需要处理。

如果不加后面那个resources,那么static/fonts/** 不会被当成资源文件。当页面访问这个目录下的文件时会报404,如下:
在这里插入图片描述
所以后面必须还需要配置一个resources来包含这个目录下的文件, 配置filter:false ,表示不处理。

二、include与exclude及其filter的使用

Maven resource 中的<include><exclude>用于包含或排除某一文件目录下的文件是否是工程资源的。

<include><exclude>划定的范围存在冲突,则以<exclude>配置为准。

多数情况下,使用<include><exclude>是为了配合<filtering>实现替换文件中的变量的需要。

例如:

在某一个工程中,src/main/resources目录下都是工程的资源文件,并不需要<include><exclude>再进行划定。

但如果需要对且仅对其中的jdbc.propertiesmail.properties两个文件进行过滤,则需要借助<include><exclude>进行如下的配置:

<resources>
<!-- Filter jdbc.properties & mail.properties.-->
<!-- NOTE: We don't filter applicationContext-*.xml -->
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <includes>
      <include>jdbc.properties</include>
      <include>mail.properties</include>
    </includes>
  </resource>
  <!-- Include other files as resources files. -->
  <resource>
    <directory>src/main/resources</directory>
    <filtering>false</filtering>
    <excludes>
      <exclude>jdbc.properties</exclude>
      <exclude>mail.properties</exclude>
    </excludes>
  </resource>
</resources>

其中第一段<resource>配置声明:在src/main/resources目录下,仅jdbc.propertiesmail.properties两个文件是资源文件,然后,这两个文件需要被处理替换。而第二段<resource>配置声明:同样在src/main/resources目录下,除jdbc.propertiesmail.properties两个文件外的其他文件也是资源文件,但是它们不会被处理替换。

参考:
https://blog.youkuaiyun.com/wangjunjun2008/article/details/54708079

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值