maven-enforcer-plugin
小さな pomを使用してピックアップしようとしています (100 以上の依存関係を持つプロジェクト pom にジャンプする前に)。enforcer
プラグインを追加した後、Dependency convergence error
. pom.xml
ファイルを以下に示します
(見づらくて申し訳ありません)。
エンフォーサ プラグインを無効にせずにエラーを修正するにはどうすればよいですか。
基本的に、ルールの使用方法の背後にある概念を理解したいと思います。dependencyConvergence
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>enforcer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.13.RELEASE</version>
</dependency>
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.4.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>dependency-convergence</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
</execution>
</executions>
<configuration>
<rules>
<dependencyConvergence />
</rules>
</configuration>
</plugin>
</plugins>
</build>
</project>
このバージョンのpom.xmlのように、dependencyManagement で各非収束依存関係を明示的に宣言する必要があるということですか(dependencyManagement に依存関係を追加)。
直接の依存関係として追加し、別のバージョンの依存関係管理に追加したため、問題はspring-context
まだ存在します。
基本的に - エラーを修正することはできますが、ルールを明確に把握することはまだできません。
1 つを修正 - pom.xml - 依存関係管理のバージョンを、明示的に使用されているバージョンに更新しました。したがって、依存関係で明示的にバージョンを指定する必要はありません。ただし、これには、親 pom の依存関係管理にアクセスする必要があります。私の発言が正しければ、これは毎回の状況ではないかもしれません。
2 つのpom.xmlを修正- spring-security-web から spring-context を除外し、機能しました。しかし、実行する除外が多数ある場合、それは苦痛になります。
これが収束規則を使用する方法である場合は? 100 以上の依存関係と 100 以上の推移的な依存関係を持つエンタープライズ プロジェクトでは、部品表 (BOM) は非常に巨大になり、ビルドに時間がかかります。うーん。(同意します。使用するバージョンをより細かく制御し、<xyz.version> のようなプロパティを使用すると、アップグレードを簡単に行うことができます)。
誰かが収束に関するルールをリストアップできれば、非常に感謝しています。