【问题标题】:Maven enforce no duplicate dependencies even of same versionMaven 强制不重复依赖,即使是相同的版本
【发布时间】:2022-06-15 22:12:18
【问题描述】:

我们可以使用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

酒吧 pom.xml:

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

Foo 依赖于 Bar,所以我们更新了 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 规则,但也许已经有了解决方案。

【问题讨论】:

  • 这将在构建过程中产生警告...
  • @khmarbaise 是的,谢谢。我正在寻找会产生错误的解决方案。

标签: maven


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 2019-04-18
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多