Maven POM依赖管理与子模块

我有这两个POM文件:

1)父pom.xml

...

<modules>
    <module>web-module</module>
    <module>interface-module</module>
</modules>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${project.groupId}.${project.artifactId}</groupId>
            <artifactId>interface-module</artifactId>
            <version>${project.version}</version>
            <type>ejb</type>
            <scope>provided</scope>
        </dependency>
    </dependencies>
 </dependencyManagement>

2)孩子pom.xml

<dependencies>
    <dependency>
        <groupId>${project.parent.groupId}.${project.parent.artifactId}</groupId>
        <artifactId>interface-module</artifactId>
        <version>${project.version}</version>
        <type>ejb</type>
    </dependency>
</dependencies>

问题是:

为什么它无法解决由父级dependencyManagment管理的依赖关系,而在Child中省略了版本? 为什么我必须指定版本,而将dependencyManagment用于从正在聚合这些模块的Parent继承的子模块? 也许有些建议?

UPD:原来,当child的groupId发生变化时,存在这种行为,并且不是从Parent继承的那个......基本上,我有两个子模块,它们都是Parent的子模块。 当我更改Child模块中的groupId时,它会要求我在依赖管理期间指定版本,这有点奇怪。 任何想法为什么maven是这样的?


父项不会传递给子模块,这意味着您必须在子模块中声明父项。

另外请注意,你在一个模块中做了两件事:

  • 子模块和子模块的聚合
  • 作为模块的父项,将其指定为父项
  • 这通常是可以的,但是在某些时候,如果您的设置稍微复杂一些,您可能会遇到循环依赖或类似问题。 只要你知道问题,你应该没问题。

    这里有一些更多的细节

    链接地址: http://www.djcxy.com/p/29703.html

    上一篇: Maven POM dependency management with submodules

    下一篇: Maven: how to override the dependency added by a library