首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Maven 依赖调解源码解析(六):dependencyManagement 版本锁定

场景 我们在根模块 mavenDependencyDemo ,用 dependencyManagement 的形式直接指定 X 的版本为 2.0。同时,A 依赖 C,而 C 依赖了 X(1.0)。...我们的场景,显然对应着第一种描述:dependencyManagement 可以指定传递依赖版本(即使传递依赖有自定义版本,也会被覆盖掉),其实就是版本锁定的概念了。...那回到 Maven 核心项目,看看 includeArtifact 方法被哪里调用了: 继续顺着调用链往上找, 看到很奇怪的现象,C 依赖的 X 变成 2.0 版本了,但是 C 明明是 X(1.0...最终我们找到了这里: 至此,我们找到了「解析 dependencyManagement 定义的依赖版本」的源码。...小结 依赖解析过程,会解析 dependencyManagement 定义的依赖版本,如果解析到了,会以 dependencyManagement 重定义的依赖版本为准,也就是我们常提到的版本锁定

78530

maven 版本依赖冲突问题

在使用maven构建依赖的时候,发现springBoot的版本和导入的依赖版本的 spring-context 的版本出现冲突。...image.png 要引入的依赖,它所依赖的spring-context版本为3.24 我的springboot 主版本较高2.18 它的spring-context为5.19 因此在被依赖版本和...自己的springboot 版本都出现了冲突的提示 image.png 要知道sping-context 下包含了很多的依赖 core aop beans 等 因此他们的都会有版本冲突。...解决办法 出现这种问题的办法首先是因为 依赖的上传者 没有约束自己的引入的依赖 比如 在它引入的时候要将 optional 去约束否则就会产生 版本依赖传递的问题。...可以不填写版本号,会根据被引入的项目版本号进行导入。

3K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    何在 Debian 锁定软件包版本

    在 Debian 或基于 Debian/Ubuntu 的 Linux 发行版系统,有多种方法可以将软件包锁定在一个特定的版本。也就是说,可以将某个软件固定维护在指定版本,不让其随系统更新而更新。...为什么要锁定软件包,防止软件包更新呢? 通常是用户对某个软件版本有特定的需求,或更新期间、更新后可能会导致问题,所以需要维持特定的版本不进行升级。...还有部分服务依赖于系统特定的软件,比如指定的 Linux 内核版本,这时就需要锁定内核版本防止因内核升级导致服务异常。 我们这里介绍两种方式,防止软件包被更新。...需要注意的是,如果软件包被其他软件所依赖,阻止其更新,可能会导致关联问题。建议将尽量少的的软件包锁定不更新,尤其是系统的共享库文件。...你可以使用以下命令,管理锁定的软件: sudo apt-mark hold PACKAGE_NAME #锁定软件版本

    2K30

    Maven依赖版本更新踩坑

    : 如上图,按照对Maven传递依赖的理解,此时在xx项目中使用的caffeine版本应该是在yy项目中配置的3.1.8,但实际结果却是使用的spring-boot-dependencies-2.4.2...解决办法 经过实验发现,凡是在通过管理的组件版本优先级都比向下依赖的组件版本优先级高。...,:3.1.8,此时将会使用在xx定义的(3.1.8)覆盖在spring-boot-dependencies-2.4.2.pom定义的<caffeine.version...重新依赖组件 倘若项目的不是直接设置为通过管理组件的模块,或者在没有通过定义组件版本,那么此时就只能在项目中重新依赖组件及版本了...【参考】 记录一次Maven依赖传递,模块之间依赖版本不一致问题 覆盖 Spring Boot 依赖版本

    13510

    Maven依赖管理

    依赖配置 2. 依赖传递 2.1 依赖传递冲突问题 2.2 可选依赖 2.3 排除依赖 3. 依赖范围 4. 依赖范围传递性 1....— 依赖版本号--> 4.12 2....依赖传递 直接依赖:在当前项目中通过依赖配置建立的依赖关系 间接依赖:项目的依赖如果依赖其他资源,当前项目间接依赖其他资源 2.1 依赖传递冲突问题 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低...,层级越浅,优先级越高 声明优先:当资源在相同的层级被依赖时,配置的顺序靠前的覆盖配置顺序靠后的 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的(在一个pom) 2.2 可选依赖 可选依赖指对外隐藏当前所以来的资源...排除依赖指主动断开依赖的资源,被排除的资源无需指定版本–不需要 junit junit</artifactId

    78320

    何在 Windows 11 禁用锁定屏幕更新

    何在 Windows 11 禁用锁定屏幕 在更新到 Windows 11 之后,在 Windows 10 下对 Windows 注册表文件进行的许多调整仍然存在,但是,许多其他调整已恢复为默认设置。...这就是为什么我们必须重新审视在 Windows 11 禁用锁定屏幕所需的过程。 免责声明:编辑 Windows 注册表文件是一项严肃的工作。...从结果,选择 Regedit 应用程序,然后使用左侧窗口导航到该键(图 A)。...要测试您的编辑是否成功,请按键盘组合 Windows + L 手动锁定您的 Windows 11 PC。您现在应该看到登录屏幕,而不是您通常会看到的锁定屏幕,耐心等待您输入访问凭据....参见:Windows 徽标键盘快捷键:完整列表(TechRepublic) 如果您想将 Windows 11 锁定屏幕添加回您的设置,只需再次编辑 Windows 注册表文件并将 NoLockScreen

    2.3K30

    maven子pom没有继承到父pom依赖版本

    maven Java项目很多都会有子module,一般父项目没有逻辑代码,在父项目pom.xml中注明依赖、version和其他一些公用的东西,子module的pom继承父pom,子pom就不用写依赖版本了...,但至少也要写用到依赖的groupId、artifactId,这样默认会使用父项目依赖版本。...pom版本了 dependencyManagement:像上面提到的,一般在父项目中会声明这个元素,和普通依赖用法类似,这个元素并不会真的引入依赖,只会标明依赖版本,子项目会从父项目找 org.projectlombok...版本测试,似乎没有relativePath标签时,它没有从当前pom文件的上一级目录找,子模块继承不到父模块dependencyManagement包的version信息。

    4.5K20
    领券