例:
この図では、API ライブラリはいくつかのライブラリをインポートしていますが、これらのライブラリはライブラリ X の異なるバージョンにも依存します。これにより、依存関係の競合が防止されます。
この問題を解決する方法
Maven および Gradle ライブラリ管理ツールが登場する前は、Java プロジェクトを開発するときに、依存関係の解決に多くの時間を費やす必要がありました。プロジェクト内の競合。Maven および Gradle ツールの導入により、依存関係の問題は大幅に解決されましたが、依然として ClassNotFoundException、MethodNotSupportedException、NoClassDefNotFound などの問題が発生します。多くの場合、解決するには開発者の経験に頼っています。同時に、Eclipse/IntelliJ 開発ツールの
Dependency Analyzer
など、問題のトラブルシューティングに役立ついくつかの開発ツールを利用することもできます。
問題の原因となっている依存関係がどのライブラリに含まれているかを検出した場合、それらのライブラリを依存関係管理ファイル (pom.xml または build.gradle) から除外する必要があります。異なるバージョンの依存関係を持つライブラリ。
maven-enforcer-plugin プラグインMaven は、契約への準拠を検証 (または開発環境を検証) するための Maven-Enforcer-Plugin プラグインを提供します。 。たとえば、JDK バージョン、Maven バージョン、開発環境 (Linux、Windows など)、依存する jar パッケージのバージョンなどです。
プラグインを使用するには、pom に導入するだけです。
<plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-enforcer-plugin</artifactid> <version>1.3.1</version> <executions> <execution> <id>enforce</id> <configuration> <rules> <dependencyconvergence></dependencyconvergence> </rules> </configuration> <goals> <goal>enforce</goal> </goals> </execution> </executions> </plugin>###mvn clean package を実行すると、競合する jar バージョンとその親 pom が次のようにコンソールに出力されます。
以上がJava プロジェクトでの循環依存関係を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。