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

Maven构建错误:如何排除maven-clean-plugin的javax.inject依赖?

解决maven-clean-plugin依赖javax.inject导致构建失败的问题

核心分析

maven-clean-plugin 3.3.2本身并不直接依赖javax.inject:javax.inject:1,这个依赖大概率是通过maven-core(插件的核心依赖)间接传递引入的。由于流水线限制无法从自定义仓库下载该漏洞依赖,需要通过以下方式切断这个依赖链:


方法1:在插件配置中显式排除传递依赖

在pom.xml的<build>区块下,给maven-clean-plugin添加依赖排除规则,直接移除maven-core中的javax.inject依赖:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-clean-plugin</artifactId>
      <version>3.3.2</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-core</artifactId>
          <version>${maven.version}</version> <!-- 替换为你项目使用的Maven版本,比如3.8.6 -->
          <exclusions>
            <exclusion>
              <groupId>javax.inject</groupId>
              <artifactId>javax.inject</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

方法2:用dependencyManagement强制覆盖或标记为provided

如果流水线允许使用无漏洞的替代版本,或者可以让Maven不主动下载该依赖,可在<dependencyManagement>中配置:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>安全替代版本号</version> <!-- 若存在安全版本,替换此处 -->
      <scope>provided</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

标记为provided后,Maven会假设该依赖由运行环境提供,不会尝试从仓库下载。

方法3:切换到不依赖javax.inject的插件版本

部分旧版/新版maven-clean-plugin可能不存在这个依赖,比如3.2.0版本。你可以直接替换插件版本:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-clean-plugin</artifactId>
  <version>3.2.0</version>
</plugin>

你可以通过本地命令mvn dependency:tree -Dplugin=org.apache.maven.plugins:maven-clean-plugin查看对应版本的依赖树,确认是否包含javax.inject。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:02:38