gpt4 book ai didi

java - 为什么maven依赖中的版本号有时会被跳过?

转载 作者:行者123 更新时间:2023-12-02 14:50:48 26 4
gpt4 key购买 nike

我对 Maven 的功能还很陌生..我发现在 pom.xml 中放置依赖项的地方,有时只提到 groupID 和artifact id,而跳过 version。为什么是这样?例如以下依赖项来自 springsource 网站 http://spring.io/guides/gs/authenticating-ldap/

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-server-jndi</artifactId>
<version>1.5.5</version>
</dependency>
</dependencies>

但在 stackoverflow 的其他地方也提到版本不是可选的。如果有人能解释这一点,我会很高兴。

最佳答案

是的,版本不是可选的。

考虑一个多模块应用程序,它有 10 个模块,例如 module1、module2.. module10。假设所有这 10 个项目都使用 spring-boot-starter-web 。如果这 10 个模块相互依赖,您可能需要使用相同版本的 spring-boot-starter-web在这 10 个中的每一个中。

现在想象一下,如果您要在所有这 10 个 pom 文件中维护相同的版本号,然后当您想要使用更新版本的 spring-boot-starter-web 时更新所有这些文件,会有多复杂。 。如果这些信息能够集中管理不是更好吗?

Maven 有一些已知的东西 <dependencyManagement/>标签来解决这个问题并集中依赖信息。

对于您提供的示例,下面的一组链接将帮助您了解如何解析版本号,即使它不存在于您正在查看的 pom 中。

查看您正在查看的 pom 的父标签 ( https://github.com/spring-guides/gs-authenticating-ldap/blob/master/complete/pom.xml )

现在让我们转到该父级并查看该 pom ( https://github.com/spring-projects/spring-boot/blob/master/spring-boot-starters/spring-boot-starter-parent/pom.xml ) 的 dependencyManagement 部分中是否指定了版本。不,它也没有在那里定义。现在让我们看看 parent 的 parent 。 https://github.com/spring-projects/spring-boot/blob/master/spring-boot-dependencies/pom.xml 。哦,是的,我们在那里得到了版本号。

与dependencyManagement类似,插件可以在pom.xml的pluginManagement部分进行管理。

希望能解释一下。

引用:dependencyManagement , pluginManagement

关于java - 为什么maven依赖中的版本号有时会被跳过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com