我有一个包含两个模块的项目。核心模块在pom中包含以下内容:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>project.X</groupId>
<artifactId>project_X</artifactId>
<version>42</version>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
字符串
此对pom的依赖项声明时未导入作用域
并且同一项目的第二模块具有以下内容:
<dependencies>
<dependency>
<groupId>project.X</groupId>
<artifactId>project_X</artifactId>
<type>pom</type>
</dependency>
</dependencies>
型
所有这些都很好用,但是如果我把import放在core pom里,就像这样:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>project.X</groupId>
<artifactId>project_X</artifactId>
<version>42</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
型
那么第二个模块将不会编译,因为依赖项没有声明版本。但是,据我所知,它应该在根模块中使用范围导入进行编译,如果相反的话,则不应该进行编译。有人知道这种行为的原因吗?
谢谢.
1条答案
按热度按时间rqqzpn5f1#
有人知道这种行为的原因吗?
这就是该功能在15年前实现的方式:
字符串
我相信当前的实现与文档同步:
当导入用于定义相关构件的“库”时是最有效的,这些构件通常是多项目构建的一部分。一个项目使用这些库中的一个或多个构件是相当常见的。然而,有时很难保持项目中使用工件的版本与库中分发的版本同步。下面的模式说明了“物料清单”(BOM)可供其他项目使用。
项目的根是BOM POM。它定义将在库中创建的所有工件的版本。希望使用该库的其他项目应将此POM导入其POM的dependencyManagement部分
因为你不应该在BOM中定义依赖关系(只有版本,即托管依赖关系),所以定义BOM上的依赖关系没有任何意义。