问题 {#问题}
最近电脑重装系统了,开发环境都重装了,打包项目时发现一直打包失败
- 电脑环境如下
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:
SpringBoot2.4.0 MavenFilteringException: Input length = 1
https://maven.apache.org/plugins/maven-resources-plugin/examples/binaries-filtering.html