依赖管理中的依赖与 Maven 版本插件中的依赖
Posted
技术标签:
【中文标题】依赖管理中的依赖与 Maven 版本插件中的依赖【英文标题】:Dependencies in Dependency Management vs Dependencies in Maven versions plugin 【发布时间】:2015-10-13 15:24:42 【问题描述】:当我使用 Maven versions:display-dependency-updates
检查依赖项更新时,我得到两部分结果。
第一个:
依赖管理中的以下依赖有更新 版本:
第二个:
Dependencies 中的以下依赖有较新的版本:
这两者有什么区别?
【问题讨论】:
differences between dependencymanagement and dependencies in maven 的可能重复项 【参考方案1】:POM 的Dependency 部分定义了项目所依赖的工件(jar、zip 等)。即编译、运行等所需的工件。
POM 的Dependency Management 部分用于管理依赖信息。
因此,例如,在以下 pom 中,JUnit 依赖项完全在 POM 的 dependencyManagement
部分中定义,带有 version=4.11
和 scope = test
。
在dependency
部分中,您只需使用groupId
和artifactId
定义JUnit 依赖项,maven 会自动从dependencyManagement
部分选择版本和范围。
<?xml version="1.0" encoding="utf-8"?>
<project>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependencies>
</project>
通常您会在父 POM 中定义 dependencyManagement
部分,您可以在其中定义所有依赖项的版本和范围。然后在子模块中,您只需使用groupId
和artifactId
定义依赖项。这使您可以集中管理版本,这意味着您只需在一个地方更新它们。
所有这些都在 Maven 文档中得到了更好的解释: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
Versions Maven Plugin 只是列出了在每个部分中找到的版本,因为在 dependencies
部分中可以覆盖在 dependencyManagement
部分中定义的 version
。
【讨论】:
你的答案比那些更清楚:***.com/questions/2619598/…。谢谢 DB5以上是关于依赖管理中的依赖与 Maven 版本插件中的依赖的主要内容,如果未能解决你的问题,请参考以下文章
关于maven中的快照版本(snapshot)与正式版本(release)解析。