mavenは依存関係の競合をどのように解決しますか?

Mavenには、依存関係の衝突を解決するためのいくつかの方法があります。

  1. 除外された人たち
<dependency>
    <groupId>group1</groupId>
    <artifactId>artifact1</artifactId>
    <version>1.0</version>
    <exclusions>
        <exclusion>
            <groupId>group2</groupId>
            <artifactId>artifact2</artifactId>
        </exclusion>
    </exclusions>
</dependency>

group1:artifact1の依存関係からgroup2:artifact2を除外することになります。

  1. Mavenの強制依存メカニズムを使用して、特定のバージョンの依存関係を指定する:pom.xmlファイルで特定の依存関係を強制バージョンとして設定します。例:
<dependency>
    <groupId>group1</groupId>
    <artifactId>artifact1</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>group2</groupId>
    <artifactId>artifact2</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>group3</groupId>
    <artifactId>artifact3</artifactId>
    <version>3.0</version>
    <exclusions>
        <exclusion>
            <groupId>group2</groupId>
            <artifactId>artifact2</artifactId>
        </exclusion>
    </exclusions>
</dependency>

上記の例では、group3:artifact3はgroup2:artifact2の依存関係を除外しているため、Mavenはgroup2:artifact2の強制バージョンを使用します。

  1. 依存関係の管理
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>group1</groupId>
            <artifactId>artifact1</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>group2</groupId>
            <artifactId>artifact2</artifactId>
            <version>2.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

この依存関係をプロジェクトに導入する際、バージョン番号を指定する必要はなく、Mavenは自動的にで定義されたバージョンを使用します。

  1. Mavenプラグインを使用する:いくつかのMavenプラグインは、依存関係の衝突問題を解決するのに役立ちます。例えば、Maven Shade PluginやMaven Assembly Pluginなどです。これらのプラグインを使用すると、すべての依存関係を1つの実行可能なJARファイルにパッケージ化して、依存関係の衝突を回避できます。

状況に応じて適切な紛争解決方法を選択する必要があります。

bannerAds