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

Maven如何配置强制禁止同版本重复依赖声明

我们可以使用maven-enforcer-plugin来阻止不同版本的重复依赖,对应配置如下:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>3.0.0</version>

  <executions>
    <execution>
      <id>no-duplicate-dependencies</id>

      <goals>
        <goal>enforce</goal>
      </goals>

      <configuration>
        <rules>
          <banDuplicatePomDependencyVersions/>
        </rules>
      </configuration>
    </execution>
  </executions>
</plugin>

那么对于相同版本的重复依赖声明该如何处理呢?

假设我们正在构建一个多模块项目,初始项目为Foo。
Foo的pom.xml配置如下:

<dependencies>
  <dependency>
    <groupId>someGroup</groupId>
    <artifactId>someArtifact</artifactId>
    <version>1.0.0</version>
  </dependency>
</dependencies>

后续我们引入了Bar模块,该模块同样依赖相同版本的someArtifact。
Bar的pom.xml配置如下:

<dependencies>
  <dependency>
    <groupId>someGroup</groupId>
    <artifactId>someArtifact</artifactId>
    <version>1.0.0</version>
  </dependency>
</dependencies>

由于Foo依赖Bar,因此需要更新Foo的POM文件。更新后的Foo pom.xml配置如下:

<dependencies>
  <dependency>
    <groupId>myGroup</groupId>
    <artifactId>bar</artifactId>
    <version>1.0.0</version>
  </dependency>

  <dependency>
    <groupId>someGroup</groupId>
    <artifactId>someArtifact</artifactId>
    <version>1.0.0</version>
  </dependency>
</dependencies>

如上述示例所示,随着项目规模不断扩大,我们可能会忘记某版本的依赖已经以传递依赖的形式引入,这类重复的依赖声明(例如示例中的someArtifact)会让项目配置显得杂乱冗余。
我可以自行编写新的maven-enforcer-plugin规则实现该校验能力,但想了解是否已有现成的解决方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:39:02