3

我试图了解项目的 pom.xml 文件中的依赖项与 java 类路径/构建路径的顺序之间的联系(我的问题也是关于 pom 的继承)。

到目前为止,我无法找到详细的分步说明。

我已经注意到它肯定不是“相同的”,这意味着有时我在 pom.xml 中的依赖项不会出现在 eclipse 的构建路径中或者不会以相同的顺序出现(在提交mvn eclipse:eclipse -$一些标志)。

例如,假设我有以下 Parent 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?不确定?何时以及为什么其中一个应该/不应该出现在构建路径中?
  2. CHILD 项目的类路径文件是否应该包含:PARENT、SOME_OTHER_ARTIFACT1、SOME_OTHER_ARTIFACT2?不确定?何时以及为什么其中一个应该/不应该出现在构建路径中?
  3. 它是否与运行mvn eclipse:eclipse时使用的标志(即$someflag )有关?
  4. 库中的 jar 是否也应该按照正在初始化的项目中依赖项的顺序出现?即PARENT,SOME_OTHER_ARTIFACT1,SOME_OTHER_ARTIFACT2(从上到下)一定吗?顺序何时以及为什么应该不同?

谢谢

4

1 回答 1

0

回复“我的问题也是关于 poms 的继承”

请参阅Maven:完整参考项目继承

如果您的项目通过父元素使用继承,您可以避免重复自己。当项目指定父项目时,它会继承父项目的 POM 中的信息。然后它可以覆盖并添加到此父 POM 中指定的值。

...和 多模块与继承

从父项目继承和由多模块项目管理是有区别的。父项目是将其值传递给其子项目的项目。多模块项目只是管理一组其他子项目或模块。

于 2015-06-09T09:04:34.590 回答