依赖配置阶段
- 在
build.gradle
中的dependencies
中配置依赖,依赖分以下四种
源码依赖
(src/main/java) :compile,runtime测试依赖
(src/main/test) :testCompile,runtime
- 依赖配置(判断仅仅是运行阶段需要依赖还是仅仅测试阶段需要依赖)
compile
测试阶段的编译和运行存在,源码运行阶段存在runtime
只有测试运行阶段,源码运行阶段这两个阶段存在testCompile
测试代码阶段的编译和运行存在testRuntime
只有测试代码阶段的运行阶段存在
版本冲突解决
- maven自动解决传递依赖的策略
-
最短路径原则(需要D包)
- D1路径:项目 → A → D1
- D2路径:项目 → B → E1 → D2
- D1与D2是名字相同但版本不同的包,D1路径短,所以使用D1中声明的依赖版本
-
优先声明原则(需要D包)
- D3路径:项目 → A → E1 → D3
- D4路径:项目 → B → E2 → D3
- 路径相同,但是E包的版本不同,由于E1先声明,所以使用E1声明的依赖版本
-
存在的问题(去查如何解决)
- 在D2与D3 情况下,若想要高版本的D3包,但由于先声明了E1,所以只能使用D2中低版本的D2功能,D3中D包的新功能无法使用
- gradle解决传递依赖版本冲突的策略
- 查看jar包冲突的方法:
关闭默认自动解决冲突
的策略,构建时会抛出哪些jar包冲突的异常,然后再去处理冲突。使用configurations.all{resolutionStrategy{failOnVersionConflict()}} - 方案一:dependencies函数中排除传递依赖中冲突的版本,不使用它,exclude group:"xxx",module:"xxx",
由程序员自己配置需要使用的版本
- 方案二:手动指定使用的版本,使用configurations.all{resolutionStrategy{force'group:name:version'}}