人生若只如初见

WXY

Maven报错failed with MalformedInputException: Input length = 1 -> [Help 1]

2024-03-26

2024-03-26-uywmqlyy.png

问题

最近电脑重装系统了,开发环境都重装了,打包项目时发现一直打包失败

  • 电脑环境如下
Microsoft Windows [版本 10.0.19045.4170]
(c) Microsoft Corporation。保留所有权利。

C:\Users\wxy>vfox ls
All installed sdk versions
├─┬java
│ ├──v8
│ └──v21
└─┬maven
  └──v3.9.6
  • 项目环境

springboot 2.5.7

maven-resources-plugin:3.3.1

原因

Maven 在处理resource目录下资源时遇到了一个编码问题,导致过滤操作失败

具体来说,错误信息中提到了一个 MalformedInputException,这表示输入的数据有问题,可能是因为文件的编码与 Maven 预期的编码不匹配。

如果是文本文件或可编辑文件 可尝试修正文件编码,此处 .cer文件是个证书 很显然无法直接修改

解决方法

方法一

使用 maven-resources-plugin插件来配置 使maven 忽略这些后缀文件的转码

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
     <configuration>
         <nonFilteredFileExtensions>
           <nonFilteredFileExtension>cer</nonFilteredFileExtension>
           <nonFilteredFileExtension>properties</nonFilteredFileExtension>
         </nonFilteredFileExtensions>
     </configuration>
</plugin>

配置好之后先 reload maven 再进行 mvn package 打包即可

方法二

maven-resources-plugin 需要修改到版本 3.1.0 即可

<!--     https://github.com/spring-projects/spring-boot/issues/24346       -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>

方法三

降低maven版本至3.9以下即可3.8.x

相关参考

maven 3.9.1 failing to build project with error:

failed with MalformedInputException: Input length = 1 when building java application with maven 3.9.0

SpringBoot2.4.0 MavenFilteringException: Input length = 1

https://maven.apache.org/plugins/maven-resources-plugin/examples/binaries-filtering.html