You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven压缩插件误删CSS中URL字符串空格问题求助

解决minify-maven-plugin压缩CSS时误删data URL空格导致失效的问题

我们使用minify-maven-plugin压缩JS和CSS时,发现插件会错误删除CSS中data URL里的空格,导致SVG资源无法正常加载。

插件配置

<plugin>
    <groupId>com.samaxes.maven</groupId>
    <artifactId>minify-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>default-minify</id>
            <configuration>
                <jsEngine>CLOSURE</jsEngine>
                <skipMerge>true</skipMerge>
                <nosuffix>true</nosuffix>
                <webappSourceDir>${basedir}/src/main/webapp</webappSourceDir>
                <cssSourceDir>css</cssSourceDir>
                <cssSourceFiles>
                    <cssSourceFile>global.css</cssSourceFile>
                </cssSourceFiles>
                <jsSourceDir>javascript</jsSourceDir>
                <jsSourceFiles>
                    <jsSourceFile>root.js</jsSourceFile>
                    <jsSourceFile>global.js</jsSourceFile>
                </jsSourceFiles>
            </configuration>
            <goals>
                <goal>minify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

问题示例

  • 原始CSS代码:
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3e%3ccircle cx='50%25' cy='50%25' r='4' fill='%23EA7200'/%3e%3c/svg%3e");
  • 压缩后错误代码(空格被删除,SVG语法失效):
background-image: url("data:image/svg+xml,%3csvgxmlns='http://www.w3.org/2000/svg'viewBox='001414'%3e%3ccirclecx='50%25'cy='50%25'r='4'fill='%23EA7200'/%3e%3c/svg%3e")

解决方法

方法1:用%20替代data URL中的空格

直接把原始CSS里data URL内的空格替换成URL编码的%20,插件不会识别为可删除空格,同时浏览器能正常解析。

修改后的CSS:

background-image: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2014%2014'%3e%3ccircle%20cx='50%25'%20cy='50%25'%20r='4'%20fill='%23EA7200'/%3e%3c/svg%3e");

方法2:更换CSS压缩引擎

默认CSS压缩引擎对data URL处理存在bug,可尝试切换为YUI引擎,在插件配置中添加<cssEngine>参数:

<configuration>
    <jsEngine>CLOSURE</jsEngine>
    <cssEngine>YUI</cssEngine> <!-- 指定CSS压缩引擎为YUI -->
    <skipMerge>true</skipMerge>
    <!-- 其他原有配置保持不变 -->
</configuration>

YUI引擎对data URL的空格处理更精准,不会误删必要的空格。

方法3:升级插件版本

旧版本插件可能存在该bug,尝试升级到最新稳定版,看是否已修复问题:

<plugin>
    <groupId>com.samaxes.maven</groupId>
    <artifactId>minify-maven-plugin</artifactId>
    <version>1.7.6</version> <!-- 替换为最新稳定版本号 -->
    <!-- 其他配置不变 -->
</plugin>

内容的提问来源于stack exchange,提问作者Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:07:36