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

2023-12-02

我对 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 的 dependencyManagement 部分中是否指定了版本(https://github.com/spring-projects/spring-boot/blob/master/spring-boot-starters/spring-boot-starter-parent/pom.xml)。不,它也没有在那里定义。现在让我们看看父母的父母。https://github.com/spring-projects/spring-boot/blob/master/spring-boot-dependency/pom.xml。哦,是的,我们在那里得到了版本号。

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

希望能解释一下。

Refer : 依赖管理, 插件管理

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么maven依赖中的版本号有时会被跳过? 的相关文章

随机推荐

  • 使用 Android Gradle 更改版本代码

    我正在尝试在我的版本中自动增加 versionCodebuild gradle 但这不起作用 然后我尝试简单地覆盖 versionCode 例如versionCode 20但它仍然没有更新 都检查过原件AndroidManifest xml
  • 指向接口/重载过程的过程指针

    我使用过程重载和接口来在 Fortran 程序中实现某种通用性 为此 我有一个包含许多过程的模块 所有过程都是重复的 以便能够更改变量类型 我还在模块的开头提供了一系列以下类型的接口 interface norm module proced
  • Geodjango 的 Beanstalk 迁移失败

    我想在 aws beanstalk 中部署 geodjango 我已经尝试过这个解决方案 以前有用过 commands 01 yum update command sudo yum y update 02 epel repo command
  • 当向视图控制器添加展开函数时,链接器命令失败,退出代码为 1

    我正在使用 Storyboard 开发一款 iPad 应用程序 在我的应用程序中 我有一个弹出窗口和一个视图控制器 如果我添加一个像这样的函数 IBAction unwindCouponPaymentToOrderdetailsView U
  • python 中的复制构造函数?

    python中有复制构造函数吗 如果不是 我会做什么来实现类似的目标 情况是 我正在使用一个库 并且我已经用额外的功能扩展了其中一个类 并且我希望能够将从库中获取的对象转换为我自己的类的实例 我想你想要复制模块 import copy x
  • 如何将词云放入grob中?

    我创建了一个简单的词云 require wordcloud words lt c affectionate ambitious anxious articulate artistic caring contented creative cy
  • 使用 BeautifulSoup 的 Python 进行网页抓取 429 错误

    首先 我不得不说我对使用 Python 进行 Web 抓取还很陌生 我正在尝试使用这些代码行来抓取数据 import requests from bs4 import BeautifulSoup baseurl https name of
  • Angular 2路由到同一路由

    I have Ride组件 并在骑行结束时Ride Summary显示 右侧的摘要有一个 开始另一次骑行 按钮 该按钮会重定向到同一组件 Ride routerLink Ride 自从Ride组件已经是我所在的组件 它没有刷新并且Ride
  • 使用 C 结构成员的连续内存

    在将其标记为重复之前 请先阅读问题 所以这可能是一个潜在的非常愚蠢的问题 但它困扰着我 我从阅读以及许多其他问题中知道 由于编译器添加的填充 C 结构中的字段不能保证是连续的 例如 根据C标准 13 在结构体对象中 非位域成员和位域所在的单
  • Javascript 在重新加载或重定向之前删除 cookie

    我需要删除一个cookie并且then进行重定向 然而 在处理重定向之前 cookie 不会被删除 问题是 如果执行重定向时 cookie 仍然存在 则重定向会被拦截并发送到预期页面以外的页面 很奇怪 我知道 说来话长 是否有可能欺骗浏览器
  • 如何使用其他Facebook帐户登录?

    我关注了本教程制作一个小应用程序来登录并打招呼 用户名 问题是 我只能使用我的帐户登录 但无法使用其他帐户登录 此问题发生在一些需要登录的示例代码 例如 HelloFacebookSample 或 Scrumptious 中 Logcat
  • 如何在Python中合并2列

    假设我使用 numpy 定义了一个 2x2 矩阵 array 1 2 2 3 现在另一个 2x1 矩阵 array 3 4 如何按列连接这两个矩阵 使其变为 array 1 2 3 2 3 4 我怎样才能删除指定列 这样它就会变成 arra
  • 使用正确的网格在 R 中绘制 netcdf

    我的目标是在世界地图上绘制硝酸盐 no3 数据 使用这些数据的正确经度和纬度 有两个 netcdf 文件 1 与数据 2 与网格信息 数据摘要信息 no3 是长度为 x y sigma 的数组 no3 df 是 x y 观测值 3 个变量
  • 在 IE7 中使用 Prawn 生成 Rails PDF

    我正在使用 Prawn 和 Prawnto 在 Ruby on Rails 应用程序 Rails 版本 2 2 2 中生成 PDF 该应用程序运行良好 可以愉快地生成 PDF 并将其发送给用户以在 Firefox 中下载 问题出在IE7上
  • 使用 PHP 在 Windows 中获取文件所有者

    在 Windows 上提供文件路径并获取其所有者用户名 当然 fileowner在这里是没用的 有什么 PECL 扩展可以提供帮助吗 编辑 也可以使用的替代方案 从 DOC 文件中读取摘要数据 以检索作者 编辑2 使用找到了解决方案COM
  • 在中心找不到工件 javax.sql:jdbc-stdext:jar:2.0 (https://repo.maven.apache.org/maven2)

    我正在尝试构建为我的项目创建的 Web 服务的 REST API 我的网络服务运行没有问题 现在 我想在远程服务器上部署我的服务 并且我需要生成war file 我使用 Java Eclipse 和 Maven 作为依赖项 我试着做一个全新
  • 如何使“%bp.hap.run-until name = X86_HLT_Instr”工作?

    从命令行模拟执行二进制文件 建议使用 bp hap run until name X86 HLT Instr 这是我的完整脚本 run command file targets qsp x86 firststeps no network s
  • 在android中解析11MB的大json[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我在使用 GSON 和 J
  • wakeLock 不等待网络连接

    我使用唤醒锁作为警报来定期更新应用程序状态 三星手机上的 WiFi 需要一段时间才能连接 还有 Wifi 上的 保持唤醒 选项does not在三星手机上工作 他们也没有兴趣解决这个问题 因此 当唤醒锁确实发生时 它应该等待 wifi 连接
  • 为什么maven依赖中的版本号有时会被跳过?

    我对 Maven 的功能还很陌生 我发现在 pom xml 中放置依赖项的地方 有时只提到 groupID 和artifact id 而跳过 version 为什么是这样 例如以下依赖项来自 springsource 网站http spri