1.test 测试的时候才会依赖,编译和打包不依赖,如junit不被打包
2.compile 只有编译和打包时才会依赖
3.provided 编译和测试的时候依赖,打包不依赖,如:tomcat的一些公用jar包
4.runtime 运行时依赖,编译不依赖
5.默认compile
依赖范围compile是支持传递的,test不支持传递
1.传递的意思是项目A,引用了项目B,那么项目B中依赖的jar包在项目A中会被依赖
2.项目A,引用了项目B,项目A也引用了项目C,现在是项目B中依赖XX1.1.jar,项目C中依赖了XX1.2.jar包,那么项目A最后依赖jar包是哪个?
这里面有一个级别的问题,级别就是jar包1依赖jar包2,jar包2依赖jar包3,那么如果项目中引入了jar包1,且使用了jar3,那么这个jar包3对于这个项目来说就是间接依赖,依赖级别是2,项目中使用jar包1,这个级别是0
回到最初问题,A项目引用了B和C,那么XX.jar包对A来说依赖级别是2,这时候A中的XX.jar包就是先引用了那个项目,jar就是哪个。
3.排查一些依赖
在<dependency>标签内添加<exclusions>标签就可以排查一些jar
4.总结,如果A项目中也引用了XX.jar包,最后依赖的就是A中加入的,因为A中的级别是0。级别相同取版本最近的,级别不相等取级别小的
分享到:
相关推荐
此外,Maven还支持依赖范围(scope),如编译(compile)、测试(test)、运行(runtime)等,以控制依赖在不同阶段的作用。 接下来是"Maven继承"。在大型项目中,多个模块可能共享相同的配置或依赖。Maven的继承...
依赖范围(scope)是Maven依赖管理的一个重要概念。scope定义了依赖项的使用范围,主要有以下几个选项:compile、provided、runtime和test。compile表示依赖项在编译时需要,provided表示依赖项在编译和测试时需要,但...
Maven依赖作用范围
在压缩包中的“Maven依赖特性”可能包含了一些特定的示例或者配置,用于展示Maven如何处理不同类型的依赖特性,例如:范围(scope,如compile、test等)、排除依赖、强制版本等。通过实际操作这些例子,你可以更深入...
3. **依赖范围(scope)**:Maven允许我们定义依赖的范围,如compile(编译范围)、test(测试范围)、runtime(运行时范围)等。不同范围的依赖会在不同的阶段被引入到类路径中。 4. **依赖解决**:Maven会自动...
- **版本一致但顺序错误**:即使两个模块都依赖同一版本的framework-webapp,如果未正确设置依赖范围和顺序,升级其中一个模块时,其他依赖可能无法更新,从而造成更新失败。 3. 解决策略: Maven的`<scope>`标签...
使用Maven核心概念介绍(坐标、依赖、仓库、插件、生命周期等)、Maven与第三方Elicpse整合及如何在Eclipse中使用...任亮系列-maven依赖范围.mp41212.任亮系列-maven依赖传递和可选依赖和排除依赖.mp41313.任亮系列-mav
2. **依赖解析**:Maven遵循“依赖继承”和“范围”原则。如果一个项目依赖于另一个项目,那么前者也会间接拥有后者的依赖。依赖的范围可以是`compile`(编译时)、`test`(仅测试时)、`runtime`(运行时)等,根据...
4. 依赖范围 定义了依赖在哪些构建阶段可用,如compile范围的依赖在所有阶段都可用,而test范围的依赖只在测试阶段可用。 5. Maven工程依赖下载失败错误解决 当Maven无法下载依赖时,可以检查网络、镜像配置、pom....
本地仓库服务于当前电脑上所有的Maven工程,而远程仓库和中央仓库则可以服务于更广范围内的Maven工程。Maven的配置文件`pom.xml`是构建过程中的核心,其中包含了与构建相关的所有设置。 Maven还提供了一套标准化的...
#### Maven依赖范围 - **compile**:编译依赖,项目构建时需要,打包时也包含。 - **test**:测试依赖,仅在编译测试代码时使用。 - **provided**:编译时需要,但运行时由JDK或容器提供。 #### Maven构建SSM工程 ...
Maven 依赖范围: 1. compile:编译依赖,默认的依赖方式,在编译、测试和运行三个阶段都有效。 2. test:测试依赖,只在编译测试用例和运行测试用例有效。 3. provided:对于编译和测试有效,不会打包进发布包中。...
在Maven项目管理中,`scope`依赖范围是至关重要的概念,它决定了一个依赖在项目的不同阶段如何被引入和使用。Maven有多种scope类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **...
**二、Maven依赖原则** Maven的依赖原则主要为了解决多个依赖之间的版本冲突问题,它遵循两个基本规则: 1. **路径最短优先原则**:当两个不同版本的相同依赖出现在依赖树中,Maven会选择路径较短的那个版本。例如...
4. **依赖范围**:Maven允许我们为依赖设置不同的范围,如编译(compile)、测试(test)、运行(runtime)、提供(provided)等,控制依赖在不同阶段的可见性。 四、Maven生命周期与构建过程 Maven拥有一个标准的...
将 Maven 依赖项转换为 Gradle 的非常基本的网页。 目前只解析 groupId、artifactId 和 version。 范围被忽略。 如果使用版本变量,它将保留它,但您仍然需要在 build.gradle 文件中定义该变量 例子: 这 - ...
除了`provided`,Maven依赖的其他常见`scope`还包括: 1. **compile**:这是默认的`scope`,表示依赖在整个生命周期中都是可用的,并且会传递给依赖的项目。适用于所有阶段,会在最终的部署包中包含。 2. **...
它引入了新的依赖范围和更精确的依赖解析算法,减少了由于依赖问题导致的构建失败。 3. **增强的插件管理**:Maven 3.0 引入了插件版本管理,允许在父POM中定义插件版本,子模块可以直接继承,减少了重复代码,提高...
Maven 中的 Scope 是一种依赖范围控制机制,用于控制哪些依赖在哪些 classpath 中可用,哪些依赖包含在一个应用中。在 Maven 中,Scope 主要分为五种:compile、provided、runtime、test 和 system。 compile...