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

如何修复Maven中传递依赖javax.el的漏洞并升级至安全版本?

修复cron-utils传递依赖的javax.el漏洞方案

问题场景

项目仅通过以下依赖引入cron-utils 9.1.6,未直接声明javax.el,但该组件的传递依赖javax.el 3.0.3存在安全漏洞:

<dependency>
  <groupId>com.cronutils</groupId>
  <artifactId>cron-utils</artifactId>
  <version>9.1.6</version>
</dependency>

解决方案

1. 核心方案:使用dependencyManagement强制指定安全版本

你提到的通过dependencyManagement解决传递依赖版本问题的思路完全可行,这是Maven管控项目依赖版本的标准方式,能强制覆盖所有传递依赖的javax.el版本。

2. 具体操作步骤

  • 步骤1:确定javax.el的安全版本
    选择官方确认无安全隐患的稳定版本,例如3.0.1-b10(或更高的官方安全版本,可通过Maven仓库确认最新安全版)。
  • 步骤2:在pom.xml中添加dependencyManagement配置
    在项目的<dependencyManagement>节点中声明javax.el的groupId、artifactId和安全版本,示例如下:
    <dependencyManagement>
      <dependencies>
        <!-- 强制指定javax.el的安全版本,覆盖传递依赖的旧版本 -->
        <dependency>
          <groupId>javax.el</groupId>
          <artifactId>javax.el-api</artifactId>
          <version>3.0.1-b10</version>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
    注:若cron-utils依赖的是javax.el:el-api(旧groupId对应artifactId),则调整对应节点的groupId和artifactId即可。
  • 步骤3:验证依赖生效
    执行Maven命令查看依赖树,确认javax.el版本已更新:
    mvn dependency:tree | grep javax.el
    

3. 备选方案:直接声明javax.el依赖

也可以在<dependencies>节点中直接添加javax.el的安全版本依赖,Maven会优先使用直接声明的版本覆盖传递依赖,但更推荐使用dependencyManagement,便于统一管控项目所有依赖版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:53:30