1. ホーム
  2. java

[解決済み] pom型の依存関係で、スコープがimportの場合とimportでない場合の違いは何ですか?

2022-06-20 04:22:51

質問

Maven 2.0.9以降では、includeすることが可能です。

<type>pom</type>
<scope>import</scope>

の中に <dependencyManagement> セクションで

私が理解するところでは、このpomに含まれる依存関係を、あたかもここで元々定義されていたかのように"replaced"されます。

上記の解決策と、このpomへの単純な依存関係なしの違いは何ですか? import スコープを使用しない単純な依存関係 (後者は "dependencies grouping" と呼ばれているのを見ました) と何が違うのでしょうか。そのような "グループ化された" 依存関係は、依存関係の優先順位を解決する際に低い優先度を持つという唯一の違いですか?

どのように解決するのですか?

インポートできるのは 管理された依存関係 . つまり、インポートできるのは インポート 他の POM を dependencyManagement セクションにインポートします。

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>other.pom.group.id</groupId>
            <artifactId>other-pom-artifact-id</artifactId>
            <version>SNAPSHOT</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>   
    </dependencies>
</dependencyManagement>
...

それから起こることは dependencyManagement セクションの other-pom-artifact-id は、POM に含まれる dependencyManagement セクションに含まれます。そして、これらの依存関係を dependency セクションで参照することができます。 version などになります。

しかし、もし POM で単に通常の依存関係を other-pom-artifact-id と定義すると、すべての dependencies から dependency セクションの other-pom-artifact-id セクションで定義された依存関係は、プロジェクトに一時的に含まれます。 dependencyManagement セクションで定義された依存関係は other-pom-artifact-id は全く含まれません。

つまり、基本的には2つの異なるタイプの依存関係(管理された依存関係と通常の依存関係)をインポート/インクルードするために2つの異なるメカニズムが使用されています。

maven の Web サイトに良いページがあり、私が説明するよりもはるかにうまく説明されています。 Maven における依存関係の管理 で、これには 依存関係のインポート .