首页 > 其他分享 >maven依赖的优先级

maven依赖的优先级

时间:2024-01-28 10:33:39浏览次数:33  
标签:依赖 优先级 1.11 micrometer maven 传递性 版本

优先级

在 Maven 中,依赖的解析顺序和优先级如下:

直接依赖优先级高于传递性依赖: 如果你在项目的 pom.xml 中直接声明了某个依赖项,那么 Maven 会首先尝试使用这个直接声明的依赖项,而不考虑传递性依赖。直接依赖项的版本号会优先于传递性依赖。

最近者优先: 如果有多个传递性依赖解析到相同的依赖项,Maven 将选择距离项目最近的那个依赖项。这意味着,离项目更近的依赖项的版本会被选择。

先声明者优先: 如果有多个传递性依赖解析到相同的依赖项,并且它们距离项目的距离相同,则 Maven 将选择最先声明的那个依赖项。

实战

image

micrometer-core 被两个库依赖:

  • influxdb-spring,依赖micrometer-core的1.11.3版本
  • spring-boot-starter-actuator,依赖micrometer-core的1.9.16版本

根据“最近着优先”原则,最终maven选择的是1.9.16版本。
“omitted for conflict with:1.9.16” 意思是 “和版本1.9.16冲突,被省略”,也就是不加载1.11.3版本。

如果硬要使用1.11.3版本,方法就是提高1.11.3版本的依赖优先级。
方案一:

 <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-influx</artifactId>
            <version>1.11.3</version>
        </dependency>

方案二:

<dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-core</artifactId>
            <version>1.11.2</version>
        </dependency>

都可以。

扩展学习

maven的optional参数:
https://cloud.tencent.com/developer/article/1756145

标签:依赖,优先级,1.11,micrometer,maven,传递性,版本
From: https://www.cnblogs.com/xushengbin/p/17992535

相关文章

  • 如何改Maven Dependencies的源码,如何把springboot组件的源码改造后使用
    由于springboot提供的源码有些地方不太符合预期,所以需要改动改动,这里就会说到,如何改MavenDependencies的源码。如何把springboot组件的源码改造后使用。v修改源码的几种方式直接在自己工程中建同包同类名的类进行替换采用@Primary注解排除需要替换的jar包中的类@Bean......
  • Maven
    Maven软件jarMaven是一款由Apahce软件基金会维护的一种工具,专门为Java项目提供构建和依赖管理支持。它通过一个中央仓库来管理项目所需的依赖项,并提供了一套标准的项目结构和框架生命周期。Maven使用pom.xml文件来描述项目的配置信息,包括项目的依赖、插件、构建目标等。Maven......
  • IDEA基于maven创建Java web项目
    idea:2022.2.3 IDEA新建项目,更改项目名称,有需要的可以更改项目地址,将Buidsystem从intelliJ更改到Maven 在pom.xml中添加依赖<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><......
  • 变更maven本地仓库的位置
    maven本地仓库的默认位置在C:\Users\zbf\.m2\的repository中虽然可以通过maven的config/setting.xml配置,但是一些开发工具(IDEA)的maven本地仓库位置还是在默认的.m2中,虽然还是可以改,但是IDEA中的配置又有项目配置,新项目配置,配置中又有全局配置文件、用户配置文件,然后还可以重写。......
  • Go语言官方团队推荐的依赖注入工具
    在开发过程中,我们经常需要处理一些相互依赖的组件。例如,我们可能有一个服务需要数据库连接和一些配置信息。这种相互依赖的关系在一个大型项目中可能会变得非常复杂。无序地组织这些依赖可能会造成代码的混乱和维护困难。为了更好地管理依赖关系,依赖注入是一个很好的解决方案。在G......
  • vue项目安装更新依赖时,npm install 卡住
    在代码安装或者更新依赖时,经常碰到npminstall以后很多种卡住的情况,记录部分1.版本不对可能电脑存在多个项目,多个node版本。安装使用nvm(node版本管理工具),1.安装,先把已安装的node下载掉https://nvm.uihtm.com/download.html(目前国内可下载)https:/......
  • SpringBoot 依赖管理机制
     依赖管理机制思考:1、为什么导入starter-web所有相关依赖都导入进来?开发什么场景,导入什么场景启动器。maven依赖传递原则。     A依赖B B依赖C:   导入A就拥有B和C导入场景启动器。场景启动器自动把这个场景的所有核心依赖全部导入进来2、为什么版......
  • idea maven sprint boot打包常见问题
    ideaSpringBoot多模块打包(Unabletofindmainclass和父子依赖打包的错误) 1、子模块打包没有main方法就不要用spring-boot-maven-plugin来build了,因为它是需要main方法才能打包的<!--使用springboot的maven插件会报找不到主类错误--><build><plugins>......
  • 安装OpenNebula主控额外依赖和主程序
    配置下国内源gemsources-rhttps://rubygems.org/-ahttps://gems.ruby-china.com/如果网络错误更换下面地址gemsources--removehttps://rubygems.orgsourcehttps://rubygems.orgnotpresentincachegemsources--addhttp://rubygems.orghttps://rubygems.or......
  • MapStruct+Maven+Lombok问题NoSuchBeanDefinitionException、does not have an access
    概述先直接说我遇到的问题吧,SpringBoot应用启动失败:ERROR|org.springframework.boot.web.embedded.tomcat.TomcatStarter|onStartup|61|-ErrorstartingTomcatcontext.Exception:org.springframework.beans.factory.UnsatisfiedDependencyException.Message:Er......