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

Maven 依赖管理

摘要 作为开发者,我们一直使用 Maven 来作为版本依赖管理工具,不过我们经常会遇到依赖冲突等问题,我们这边文章就来明确一下 Maven 是如何管理依赖版本的。...Maven 版本结构 Maven版本结构使用如下格式: MajorVersion [ .MinorVersion [ .IncrementalVersion ] ] [ -Qualifier [ -...如果你的版本格式不符合这个要求,Maven 会将整个版本看成一个 Qualifier 字符串 版本号也隐含了兼容性 MajorVersion: 修改是非向后兼容的,使用新版本以为要做重大改动 MinorVersion...那我们在构建的时候,哪些依赖会包含在构建中呢? 这就涉及到Maven依赖选择策略,Maven 有两条依赖选择规则: 1. 距离根节点最近的依赖会被选择使用 2....我们可以使用 exclude 方式将 Z 1.0 排除出依赖 总结 Maven依赖管理很灵活,但是当有很多的依赖时,很容易会造成依赖选择的不正确。

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

Maven 依赖管理

Maven 坐标 3. 依赖冲突 3.1 冲突产生原因 3.2 解决冲突的办法 1....前言 在我们创建使用 Maven 项目的过程中,当需要用到第三方的控件时,都是通过依赖管理来达成,也就是 Maven 项目中必有的 pom.xml 文件。...「artifactId」:定义实际项目中的一个 Maven 项目(模块),推荐使用实际项目名作为前缀。 「version」:定义 Maven 项目当前所处版本。...依赖冲突 3.1 冲突产生原因 Maven 项目中,通常都会定义血多 dependency,每个 dependency 内部也会定义它的 dependency,而有时各个依赖之间会产生冲突,冲突的原因通常主要是...「由于 jar 包依赖的传递性」,如果在一个项目中同时引入了一个依赖的不同版本,就可能导致依赖冲突。

84520

零到一搭建基础架构(1)-玩转maven依赖版本管理

妙啊~ 五、多项目全局管理 有了spring给我们maven版本管理的思路,那我们是不是也可以定义这样一个业务的顶层maven版本管理工程 依赖管理demo : common-dependency...依赖spring-boot 2.版本管理工程的pom内定义业务通用的一些maven依赖版本 3.推送该工程至公司中央仓库(本地测试可以直接执行maven install将pom打包到本地私仓) 4.业务应用将父...pomspring-boot切换为baiyan-common-dependency 这样类似于一些springboot的版本,fastjson的版本等等比较具有通用性质的依赖版本定义都可以放在单独的依赖管理工程中...六、总结 本篇是0到1搭建基础架构系列的第一篇,着重为大家介绍了如何使用maven来统一管理多模块,多服务的三方jar版本。...最后给出我所认为的maven依赖管理的最佳实践 1.定义一个最父级的maven版本依赖管理工程,内部包含所有通用的工具类,业务组件的版本定义(例如mysql、fastjson版本) 2.业务服务中parent

58010

Maven 依赖管理(上)

Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。...Maven 通过读取项目文件(pom.xml),找出它们项目之间的依赖关系。 我们需要做的只是在每个项目的 pom 中定义好直接的依赖关系。其他的事情 Maven 会帮我们搞定。...功能 功能描述 依赖调节 决定当多个手动创建的版本同时出现时,哪个依赖版本将会被使用。 如果两个依赖版本依赖树里的深度是一样的时候,第一个被声明的依赖将会被使用。...依赖管理 直接的指定手动创建的某个版本被使用。例如当一个工程 C 在自己的依赖管理模块包含工程 B,即 B 依赖于 A, 那么 A 即可指定在 B 被引用时所使用的版本。...同时,当前项目的POM 文件的 部分定义的依赖关系可以取代某特定的 POM。 ---- 依赖管理 通常情况下,在一个共通的项目下,有一系列的项目。

43120

Maven依赖管理大全

大家都知道随着业务的进展,项目会变得越来越多,这个时候如果没有一个统一的依赖管理中心,就会有很多问题发生。 如果没有依赖管理中心,会发生哪些问题呢?...同一个依赖不同项目之间可能版本也会不一样,无法进行版本的统一管理和升级。 install的时候需要每个项目一个个进行,无法进行统一的install操作,项目一多就非常浪费时间。...当然它的危害还不止这些,所以我们需要有一个统一的依赖管理维护中心,别担心Maven都给我们提供好了。...如果想研究Maven怎么进行依赖才更加合适的童鞋,可以下载SpringBoot源码项目,SpringBoot的依赖关系就做的特别好,这边我也是借鉴SpringBoot的依赖关系来进行项目依赖改造的。...子项目依赖不要和project-common依赖冲突,否则很容易出现循环依赖。 子项目禁止出现依赖的version版本号,统一放在project-parent项目中管理

1.2K20

Maven依赖管理

直接依赖:在当前项目中通过依赖配置建立的依赖关系 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的 直接依赖就是我们直接写的依赖...,间接依赖就是我们写的依赖依赖的其他的依赖。...上面我配置两个junit 的版本 ,右边它显示的 依赖版本是 4.10。这会不会跟位置有关系,我们将它们两个交换 一下位置。...发现,它们还真的变了,这个就说明了,当我们同一个依赖写了两个版本,它会以最后一个为准。...比如,我现在用的mybatis用的是2.0版本,但是你用的是3.0 的版本,那这不就又版本冲突的问题了,所以干脆,你那里用啥我不管,但是我这里用啥隐藏起来,你那里看不到,这样不就没有冲突了。

13530

【JavaWeb】maven依赖管理

前言 记录学习JavaWeb课程中的部分知识点,包括maven依赖管理maven高阶、Mybatis、SpringBoot自动配置等。本篇是关于maven依赖管理的内容。...maven依赖管理 依赖配置 在项目的 pom.xml 中配置对应的依赖(当前项目运行需要的 jar 包),包括项目组织名、依赖包名及对应版本。...配置完成后,点击maven管理的刷新按钮,即可载入对应依赖本地仓库引入 或者 远程仓库下载后引入) 依赖传递 依赖具有传递性 直接依赖:在当前项目中通过依赖配置建立的依赖关系 间接依赖:被依赖的资源如果依赖其他资源... 这里将Spring Boot测试启动器spring-boot-starter-test添加到项目的依赖中...,并在该依赖中排除Junit Vintage引擎依赖junit-vintage-engine,以便使用其他测试框架,其中scope的含义见依赖范围。

13320

Maven依赖管理

Maven依赖管理我们开发一个工程需要用到大量得jar包,而这些jar 包就是我们所说得依赖,一个项目可以配置多个依赖。1、依赖传递我们来看一下今天用来演示的工程。...直接依赖:在当前项目中通过依赖配置建立的依赖关系 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的 直接依赖就是我们直接写的依赖...上面我配置两个junit 的版本 ,右边它显示的 依赖版本是 4.10。这会不会跟位置有关系,我们将它们两个交换 一下位置。...发现,它们还真的变了,这个就说明了,当我们同一个依赖写了两个版本,它会以最后一个为准。...比如,我现在用的mybatis用的是2.0版本,但是你用的是3.0 的版本,那这不就又版本冲突的问题了,所以干脆,你那里用啥我不管,但是我这里用啥隐藏起来,你那里看不到,这样不就没有冲突了。

36320

初识Maven到使用Maven进行依赖管理和项目构建

Maven能够帮助我们干什么: 它的主要两个功能: 依赖管理(jar包管理) 构建项目 ①我们知道java项目(web)在开发的过程中需要大量的jar包,这个导致我们的项目会非常的庞大,通过Maven...做了那么多准备工作,下面我们就来试试Maven怎么进行依赖管理。...这样就可以放心的添加依赖了。 ---- (八)依赖范围 在我们设置依赖的时候,会有一Scope,里面有: ?...,就可以指定我们想要的jar包版本,同时我们还可以使用ognl表达式来管理版本(当版本更新的时候) ?...---- 总结: Maven给我们构建项目和依赖管理带来了很大的便利,再也不需要我们苦恼导入jar包,和jar包版本冲突,并且提供了一套编译到发布的方法,大大提高和加快了我们项目的项目进度。

1.4K70

Maven中的依赖管理

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

74520

Maven教程3(依赖管理)

这个POM告诉Maven它正处理什么类型的项目,如何修改默认的行为来源码生成输出。...,必须的 1.5version   一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。...而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个"SNAPSHOT"的标记。   虽然项目的打包格式也是Maven坐标的重要组成部分,但是它不是项目唯一标识符的一个部分。...] 2.依赖冲突 2.1冲突产生的原因 [图片.png]   上图中a jar包通过b和d间接依赖到的c jar包版本不一致,出现了冲突 依赖关系 实例 直接依赖 a和b的依赖关系 间接依赖 a和c的依赖关系...排除掉两个冲突中的一个,那么另一个就自然使用了 [8g0z1wv6og.png] [eodz5vs5bw.png] [ys67ayx7xh.png] 2.2.4版本依赖 [8t4xqtdisn.png

67340

Maven(六)之依赖管理

前面讲了maven一些关于Maven的简单知识,今天我给大家分享一些Maven依赖管理。我相信用过maven的人都知道,它很重要的功能就是通过依赖来添加jar包。...让我们领略一下Maven是怎么管理我们的jar包的。...那么我们就说导入的包与未导入的包存在依赖关系。而使用 Maven,我们只需要在 pom.xml 文件中进行相应的配置,它就会帮助我们自动管理 jar 包之间的依赖关系。...(spring bean 和 struts2 spring plugin都需要依赖spring-core,但版本不一样) 本地仓库中找到这两个jar包 ?     ...看图     1)开发阶段(MyEclipse提供),看下图以此证明我们说的       java web 5.0目: ?       java web 6.0目: ?

79080

maven 依赖管理最佳实践

概述 maven 是一个常用的 java 跨平台项目管理工具,主要工作是项目构建、依赖管理和项目信息管理。...而 maven 可以自动地清理、编译、测试到生成报告、打包、部署,极大的简化了我们日常的工作,同时它还是一个依赖管理工具和项目信息管理工具,提供了中央仓库,能帮助我们自动下载构件。...本文我们就来重点介绍一下 maven 作为依赖管理和项目信息管理工具的使用。 2. maven 依赖的声明 maven 最强大的功能就是项目中依赖管理。...依赖管理 多模块项目中,定义一个主 pom,在主 pom 中使用 dependencyManagement 定义依赖版本依赖排除 子模块主 pom 中继承依赖,一般情况下,不要在子模块中做依赖排除...归类依赖 如果多个相关的依赖版本都是相同的,可以使用 properties 元素定义 maven 属性,依赖版本值用这一属性引用表示。

67210

UNMET PEER DEPENDENCY 中理解依赖版本管理

你可能会发现上面例子中,imweb的eslint规则是airbnb风格继承而来的,所以这个版本的eslint其实是airbnb这个包所缺失的。...其实这正是模块分析工具的需求痛点,项目下的某个包,往往会在依赖树的不同节点,存在多种版本。在深究原因之前,我们需要了解平时常见的版本号规则,以及npm在install的时候是如何进行依赖管理的。...在理解了版本号规则之后,我们可以开始慢慢窥探npm依赖管理背后的问题了。...文件中手动添加依赖; 5、bundledDependencies 这个依赖也可以记为 bundleDependencies,与其他几种依赖不同,他不是一个键值对的对象,而是一个数组,数组里是包名的字符串...参考文章 [1] 剖析npm包管理机制 [2] npm 依赖管理中被忽略的那些细节 IMWeb 团队隶属腾讯公司,是国内最专业的前端团队之一。

3.7K20

漫谈依赖管理工具:Maven,Gradle到Go

Maven定义为项目管理工具,包含了项目源码到发布的整个生命周期: validate → generate-sources → process-sources → generate-resources...这里介绍一个Maven多项目版本管理的最佳实践: 1.父项目中配置版本号,子项目中不要显示配置版本号,直接继承父项目的版本号。...4.最好通过Maven的release插件发布,避免手动修改版本号导致的不一致问题。 即便是这样,Maven的多项目版本管理经常也会遇到问题。...Maven会严格按照生命周期的阶段开始线性执行任务,而Gradle则使用了Directed Acyclic Graph来检测任务的依赖关系,决定哪些任务可以并行执行,这样使任务的定义以及执行都更灵活。...Gradle的虽然也兼容Maven仓库的SNAPSHOT机制,但它自己的版本管理机制上,并没有引入SNAPSHOT机制。它的依赖支持4.x,2.

2.5K70
领券