Maven 依赖项与依赖项管理?
我已经看过了,但还不清楚什么时候用 仅在父pom中添加Maven 依赖项与依赖项管理?,maven,Maven,我已经看过了,但还不清楚什么时候用 仅在父pom中添加dependencies标记,以及何时使用dependenciesManagement标记 我的理解是,当我的所有子模块都需要使用相同的依赖项版本时,我们应该在依赖项标记下声明依赖项(不带依赖项管理标记) 但另一方面,如果一些子项目需要使用不同的版本,那么我们应该在Dependencies标记下声明依赖项(将在dependencyManagement标记下)。然后子模块可以使用重写版本引用它们 正确吗?在中声明不会将指定的工件设置为任何项目(
dependencies
标记,以及何时使用dependenciesManagement
标记
我的理解是,当我的所有子模块都需要使用相同的依赖项版本时,我们应该在依赖项
标记下声明依赖项(不带依赖项管理
标记)
但另一方面,如果一些子项目需要使用不同的版本,那么我们应该在Dependencies
标记下声明依赖项(将在dependencyManagement
标记下)。然后子模块可以使用重写版本引用它们
正确吗?在
中声明
不会将指定的工件设置为任何项目(父项目或子项目)的依赖项。它只是说明:如果您想将其用作依赖项,则可以将其与这些设置(版本
,范围
,…)一起使用,而无需反复指定设置,然后。。。但是,您可以随时覆盖“real”中的“management”设置
另见
关于您的第二段,家长POM有两种选择:
<dependencies>
<dependency>
<groupId>g-id</groupId>
<artifactId>a-id</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
g-id
a-id
1.0.0
<dependencyManagement>
<dependencies>
<dependency>
<groupId>g-id</groupId>
<artifactId>a-id</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>g-id</groupId>
<artifactId>a-id</artifactId>
</dependency>
</dependencies>
g-id
a-id
1.0.0
g-id
a-id
中声明
不会将指定的工件设置为任何项目(父项目或子项目)的依赖项。它只是说明:如果您想将其用作依赖项,则可以将其与这些设置(版本
,范围
,…)一起使用,而无需反复指定设置,然后。。。但是,您可以随时覆盖“real”中的“management”设置
另见
关于您的第二段,家长POM有两种选择:
<dependencies>
<dependency>
<groupId>g-id</groupId>
<artifactId>a-id</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
g-id
a-id
1.0.0
<dependencyManagement>
<dependencies>
<dependency>
<groupId>g-id</groupId>
<artifactId>a-id</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>g-id</groupId>
<artifactId>a-id</artifactId>
</dependency>
</dependencies>
g-id
a-id
1.0.0
g-id
a-id
你的第三段是正确的。可能重复的可能重复的可能重复的感谢Gerold。我理解“dependencyManagement”的用法,但是你能看到我对diff b/w
Dependency
和dependencyManagement
的最新理解是否正确吗?正如你所说的。我会使用它来保持一致性:
I,e。方法2而不是1。我的观点是,如果我确信我的所有父/子模块都需要使用相同的依赖版本,那么我不应该使用方法1而不是方法2吗?因为在方法2中,我必须不必要地提到子模块中的依赖关系,所以您可以详细说明“覆盖继承的依赖关系设置的依赖关系设置不引用它。”。它本身代表“?@emily Re”我必须不必要地提到子模块中的依赖关系“–不,你不必:g-id.a-id
也被声明为/
。这样,它将由孩子继承(版本在//
中声明)。@emily Re“can you elaboate”–我的意思是,如果覆盖父项继承的依赖项(完全,即所有设置),则对父项依赖项设置的更改将不会反映在覆盖的依赖项中。但你是对的。如果向父级添加设置,它也会反映在子级,因此显然存在引用。我要删除这些句子。谢谢谢谢你,格洛德。我理解“dependencyManagement”的用法,但是你能看到我对diff b/wDependency
和dependencyManagement
的最新理解是否正确吗?正如你所说的。我会使用它来保持一致性:
I,e。方法2而不是1。我的观点是,如果我确信我的所有父/子模块都需要使用相同的依赖版本,那么我不应该使用方法1而不是方法2吗?因为在方法2中,我必须不必要地提到子模块中的依赖关系,所以您可以详细说明“覆盖继承的依赖关系设置的依赖关系设置不引用它。”。它本身代表“?@emily Re”我必须不必要地提到子模块中的依赖关系“–不,你不必:g-id.a-id
也被声明为/
。这样,它将由孩子继承(版本在//
中声明)。@emily Re“can you elaboate”–我的意思是,如果覆盖父项继承的依赖项(完全,即所有设置),则对父项依赖项设置的更改将不会反映在覆盖的依赖项中。但你是对的。如果向父级添加设置,它也会反映在子级,因此显然存在引用。我要删除这些句子。谢谢