zoukankan      html  css  js  c++  java
  • Gradle-04 包管理及解决冲突方案

    依赖配置阶段

    1. build.gradle 中的dependencies 中配置依赖,依赖分以下四种
    • 源码依赖(src/main/java) :compile,runtime
    • 测试依赖(src/main/test) :testCompile,runtime
    1. 依赖配置(判断仅仅是运行阶段需要依赖还是仅仅测试阶段需要依赖)
    • compile 测试阶段的编译和运行存在,源码运行阶段存在
    • runtime 只有测试运行阶段,源码运行阶段这两个阶段存在
    • testCompile 测试代码阶段的编译和运行存在
    • testRuntime 只有测试代码阶段的运行阶段存在

    版本冲突解决

    1. 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包的新功能无法使用
    1. gradle解决传递依赖版本冲突的策略
    • 查看jar包冲突的方法:关闭默认自动解决冲突 的策略,构建时会抛出哪些jar包冲突的异常,然后再去处理冲突。使用configurations.all{resolutionStrategy{failOnVersionConflict()}}
    • 方案一:dependencies函数中排除传递依赖中冲突的版本,不使用它,exclude group:"xxx",module:"xxx",由程序员自己配置需要使用的版本
    • 方案二:手动指定使用的版本,使用configurations.all{resolutionStrategy{force'group:name:version'}}
  • 相关阅读:
    AirtestIDE基本功能(二)
    AirtestIDE基本功能(一)
    Pycharm Debug功能详解
    AirtestIDE环境安装
    leetcode-338. 比特位计数
    leetcode-401. 二进制手表
    leetcode-392. 判断子序列
    leetcode-155. 最小栈
    leetcode-111. 二叉树的最小深度
    leetcode-110. 平衡二叉树
  • 原文地址:https://www.cnblogs.com/luckyCoder/p/12732481.html
Copyright © 2011-2022 走看看