从Maven的2.0.9起有可能包括
<type>pom</type>
<scope>import</scope>
在<dependencyManagement>
部。
据我了解,这将是“改为”与包括在此POM的依赖关系,就好像它们最初这里定义。
是什么这个POM无解的上方,简单的依赖之间的区别import
范围(我看到后者被称为“依赖分组”)? 是唯一的区别,这种“分组”的依赖有在解析依赖优先级较低的优先级?
从Maven的2.0.9起有可能包括
<type>pom</type>
<scope>import</scope>
在<dependencyManagement>
部。
据我了解,这将是“改为”与包括在此POM的依赖关系,就好像它们最初这里定义。
是什么这个POM无解的上方,简单的依赖之间的区别import
范围(我看到后者被称为“依赖分组”)? 是唯一的区别,这种“分组”的依赖有在解析依赖优先级较低的优先级?
您只能导入管理依赖 。 这意味着你只能导入其他的POM到dependencyManagement
你项目的POM的部分。 即
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>other.pom.group.id</groupId>
<artifactId>other-pom-artifact-id</artifactId>
<version>SNAPSHOT</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
...
那么,什么情况是,在定义的所有依赖dependencyManagement
一节的other-pom-artifact-id
都包含在你的POM的dependencyManagement
部分。 然后,您可以在参考这些依赖dependency
你的POM(及其所有子多金属氧酸盐)的部分,而不必包含version
等。
但是,如果在你的POM你简单地定义一个正常依赖于other-pom-artifact-id
,那么所有dependencies
从dependency
一节的other-pom-artifact-id
在你的项目及物包括-但依赖于定义dependencyManagement
部分的的other-pom-artifact-id
不包括在所有。
所以基本上两种不同的机制被用于导入/包括两种不同类型的依赖关系(管理依赖性和正常的依赖关系)。
这是一个很好页面maven的网站上,这可以解释这远比我能更好, 依赖管理Maven中 ,它也包含了特定的信息导入的依赖 。
你不能有一个pom
项目类型为simple dependency
于另一个项目。 (嗯,你可以 - 但它不会做任何有用)。 只能有一个parent-child
关系。 这基本上是managing dependency through inheritance
。
import
用于范围pom
在类型依赖<dependencyManagement>
部分,可以实现相当于multiple inheritance
。
你可以有不同的poms
-每个managing
一堆相关的依赖。 它使用这些可以在项目import
这些poms
然后指定他们需要,而无需担心版本的依赖关系。 这实质上是bill of materials
概念,这是在由@ DB5中指定的链接示出。
这有助于保持parent poms
复杂的多模块项目过于庞大而笨重。
编程范式两个概念,非常类似于面向对象的,将有助于回答这个问题:
该dependencyManagement部分只声明依赖及其详细信息在当前项目-目的是细节管理和再利用等项目,无论是通过继承( 母 )或进口( 范围 )。 这就像是在宣告程序中的数据类型,并使其可用。
依存部分定义该项目实际使用的依赖关系,可选择继承dependencyManagment下宣布的依赖关系的细节(即,版本等)。 这就是为什么你会缺少相关性,如果你只把他们dependencyManagment。 这类似于在它需要有一个程序实例化数据类型的变量的实例。