3

プロジェクトの pom.xml ファイルの依存関係と Java クラスパス/ビルド パスの順序との関係を理解し​​ようとしています (私の質問は、pom の継承に関するものでもあります)。

これまでのところ、詳細な段階的な説明を見つけることができませんでした。

「同じ」ではないことに気づきました。つまり、pom.xmlにある依存関係がEclipseのビルドパスに表示されないか、同じ順序にならないことがあります( mvn eclipse:eclipse -$をコミットした後) someflag ) .

たとえば、次の親 pom があるとします。

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>SOME_GROUP_ID</groupId>
<artifactId>PARENT</artifactId>
<version>SOME_VERSION</version>
<name>${project.groupId}:${project.artifactId}</name>
<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>SOME_OTHER_ARTIFACT1</artifactId>
        <version>${project.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
<modules>
<module>CHILD</module>
</modules>
</project>

そして、他のプロジェクトの pom.xml がそれを継承していること:

<project>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>SOME_GROUP_ID</groupId>
    <artifactId>PARENT</artifactId>
    <version>SOME_VERSION</version>
</parent>
<artifactId>CHILD</artifactId>
<name>${project.groupId}:${project.artifactId}</name>
<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>SOME_OTHER_ARTIFACT2</artifactId>
        <version>${project.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
</project>

私の質問は次のとおりです。CHILD プロジェクトで mvn eclipse:eclipse -$someflag を実行すると、次ようなります。

  1. CHILD プロジェクトのビルド パスには、PARENT、SOME_OTHER_ARTIFACT1、SOME_OTHER_ARTIFACT2 を含める必要がありますか? 確かではありませんか?それらの1つがビルドパスに表示されるべき/すべきでないのはいつ、なぜですか?
  2. CHILD プロジェクトのクラスパスファイルには、PARENT、SOME_OTHER_ARTIFACT1、SOME_OTHER_ARTIFACT2 を含める必要がありますか? 確かではありませんか?それらの1つがビルドパスに表示されるべき/すべきでないのはいつ、なぜですか?
  3. mvn eclipse:eclipseの実行時に使用されたフラグ (つまり$someflag ) に関連していますか?
  4. ライブラリ内の jar も、初期化されているプロジェクト内の依存関係の順序で表示する必要がありますか? つまり、PARENT、SOME_OTHER_ARTIFACT1、SOME_OTHER_ARTIFACT2 (上から下へ) は必然ですか? いつ、なぜ順序を変える必要があるのですか?

ありがとうございました

4

1 に答える 1

0

「私の質問はpomsの継承に関するものでもあります

Maven: The Complete ReferenceProject Inheritanceを参照してください。

プロジェクトが親要素を介して継承を利用している場合は、繰り返しを避けることができます。プロジェクトで親を指定すると、親プロジェクトの POM の情報が継承されます。その後、この親 POM で指定された値をオーバーライドして追加できます。

...および マルチモジュール対継承

親プロジェクトから継承することと、マルチモジュール プロジェクトによって管理されることには違いがあります。親プロジェクトは、その値を子に渡すプロジェクトです。マルチモジュール プロジェクトは、単に他のサブプロジェクトまたはモジュールのグループを管理します。

于 2015-06-09T09:04:34.590 に答える