You need to enable JavaScript to run this app. 执行Maven deploy时maven-resources-plugin复制application.yaml抛IllegalArgumentException
优惠活动
大模型
产品
解决方案
定价
更多

执行Maven deploy时maven-resources-plugin复制application.yaml抛IllegalArgumentException

异常产生根因

  • 直接触发源是maven-resources-plugin 3.2.0版本关联的IO工具逻辑存在兼容缺陷:该版本依赖的maven-shared-utils组件,在实现带字符编码转换的过滤式文件拷贝时,直接操作NIO缓冲区设置位置参数,当搭配JDK 11及以上高版本运行时,受JDK对NIO Buffer的访问校验规则变更影响,传入的位置参数一旦不符合上层Buffer类的校验要求,就会直接抛出IllegalArgumentException,堆栈中出现的java.nio.Buffer.position方法栈帧就是这个问题的直接落点。
  • 为什么删除application.yaml后构建能正常通过:不带过滤逻辑的普通文件拷贝走的是原生IO流分支,不会触发这段有缺陷的NIO缓冲处理代码;而日志中显示file application.yaml has a filtered file extension,说明application.yaml默认被插件识别为需要走过滤逻辑的文件,刚好命中这个缺陷分支,导致拷贝流程中断。

有效解决方案

按照优先级从高到低排列:

  • 第一优先级:升级maven-resources-plugin到修复了该缺陷的3.3.1及以上版本。该版本已经重构了文件拷贝的NIO处理逻辑,从根源上消除和高版本JDK的兼容问题,直接在项目pom.xml的build段声明插件版本即可生效,示例配置:
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>3.3.1</version>
    </plugin>
    
  • 第二优先级:如果受环境限制暂时无法升级插件版本,可以将application.yaml类文件排除在过滤拷贝的匹配范围外,直接走无缺陷的普通文件拷贝分支。示例pom资源配置:
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
          <!-- 原有需要做变量替换的配置文件保持过滤逻辑开启 -->
          <include>**/*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
          <!-- yaml/yml类文件关闭过滤,避开缺陷代码分支 -->
          <include>**/*.yaml</include>
          <include>**/*.yml</include>
        </includes>
      </resource>
    </resources>
    
    注意:如果yaml文件中确实需要使用Maven的属性占位符做值替换,可以配合配置将占位符分隔符调整为@格式,既避开和Spring自身${}占位符的冲突,也不需要依赖有缺陷的过滤分支实现变量替换。
  • 第三优先级:强制降级插件传递依赖的maven-shared-utils到缺陷出现前的2.4.2版本,覆盖插件自带的有问题依赖版本。该方案需要手动声明依赖覆盖规则,侵入性较强,仅作为无法调整插件版本、无法修改资源配置时的临时兜底方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 11:36:02