我已经在 maven 中经历了依赖管理和依赖之间的差异,但我仍然不清楚何时使用只需在父 POM 中dependencies
标签以及何时使用dependenciesManagement
标签?
我的理解是,当我的所有子模块都需要使用相同的依赖项版本时,我们应该在 Dependencies
标签(不带dependencyManagement
标签)下声明依赖关系
但另一方面,如果某些子项目需要使用不同的版本,那么我们应该在 Dependencies
标签下声明依赖项(这将在 dependencyManagement
标签下)。 然后子模块可以使用覆盖的版本引用它们
这是对的吗?
在 <dependencyManagement>
中声明<dependency>
不会将指定的工件设置为任何项目(父项目或子项目)的依赖项。它只是声明:如果您想将其用作依赖项,那么您可以将其与这些设置(version
、scope
、...)一起使用,而无需一次又一次地指定设置,然后......但是,您可以随时覆盖"真实"<dependency>
中的"管理"设置。
另请参阅 POM 参考、依赖关系管理。
关于您的第二段,父 POM 有两种选择:
-
正如您正确描述的那样:
<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> <version>1.0.0</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>g-id</groupId> <artifactId>a-id</artifactId> </dependency> </dependencies>
你的第三段是正确的。