我真的找不到任何关于这方面的文件。然而,我有时会在一些pom.xml文件的<dependencies>
部分看到这一点:
<dependency>
<groupId>com.group.id</groupId>
<artifactId>artifact-id</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>
但我无法理解其中的区别:
<dependency>
<groupId>com.group.id</groupId>
<artifactId>artifact-id</artifactId>
<version>1.0.0</version>
</dependency>
据我所知,<type>pom</type>
只与<dependencyManagement>
部分中的依赖项相关。
我不明白它在<dependencies>
部分怎么会有用。
2条答案
按热度按时间h79rfbju1#
使用案例:
在大多数项目中,您总是有相同的五个依赖项。但是你不能通过父POM来处理这个问题,因为你已经需要使用固定的父POM。
然后,您可以创建一个
pom
类型的项目onlypom
,该项目仅包含具有上述五个依赖项的pom.xml
。然后在项目<dependencies>
部分中添加pom
类型的onlypom
依赖项,这样就可以避免总是复制/粘贴五个依赖项条目。ffx8fchx2#
只能导入托管依赖项。这意味着您只能将其他POM导入到项目POM的dependencyManagement部分。即
接下来发生的事情是,在other-pom-artifact-id的dependencyManagement部分中定义的所有依赖项都包含在POM的dependencyManagement部分中。然后,您可以在POM(及其所有子POM)的依赖项部分引用这些依赖项,而不必包括版本等。
但是,如果在POM中,您只是简单地定义了对other-pom-artifact-id的普通依赖项,那么other-pom-artifact-id的dependency部分中的所有依赖项都将传递性地包含在您的项目中-但是other-pom-artifact-id的dependencyManagement部分中定义的依赖项根本不包含在内。
因此,基本上两种不同的机制用于导入/包括两种不同类型的依赖关系(托管依赖关系和普通依赖关系)。
在maven网站上有一个很好的页面,它可以比我更好地解释这一点,Maven中的依赖管理,它还包含有关导入依赖项的特定信息。