在 Gradle 项目中,排查依赖冲突可以的详细步骤

概要

在 Gradle 项目中,排查依赖冲突可以通过以下步骤进行:

1. 查看依赖树

提示:这里可以添加技术整体架构

例如:
在语言模型中,编码器和解码器都是由一个个的 Transformer 组件拼接在一起形成的。

使用命令行
在项目目录中运行以下命令:

./gradlew dependencies

此命令将显示每个配置的依赖树。要获取更详细的信息,可以指定特定的配置:

./gradlew dependencies --configuration compileClasspath

使用 Gradle 依赖洞察(dependencyInsight)
为了更有针对性地查看某个特定依赖的详细信息,可以使用 dependencyInsight 任务:

./gradlew dependencyInsight --dependency <dependency-name> --configuration <configuration-name>

2. 分析输出

在输出中,查找标有 (*) 的行,这些行表示版本冲突。例如:

+--- org.springframework.boot:spring-boot-starter-web -> 2.6.6
|    +--- org.springframework.boot:spring-boot-starter -> 2.6.6
|    |    +--- org.springframework.boot:spring-boot -> 2.6.6
|    |    \--- org.springframework:spring-core:5.3.18 -> 5.3.19

3.解决冲突

强制使用特定版本
可以在 build.gradle 文件中使用 resolutionStrategy 强制指定依赖的版本:

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        if (details.requested.group == 'org.springframework' && details.requested.name == 'spring-core') {
            details.useVersion '5.3.19'
        }
    }
}

排除传递依赖
可以排除导致冲突的传递依赖:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework', module: 'spring-core'
    }
}

4. 使用 Gradle 的依赖管理插件

为了更高级的依赖管理,可以考虑使用 Gradle Dependency Management 插件。它允许你在一个地方管理所有依赖的版本:

plugins {
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
}

dependencyManagement {
    imports {
        mavenBom 'org.springframework.boot:spring-boot-dependencies:3.2.5'
    }
}

5. 定期更新依赖

保持依赖的最新状态也有助于最小化冲突。你可以使用像 Gradle Versions Plugin 这样的工具来检查依赖的更新:

plugins {
    id 'com.github.ben-manes.versions' version '0.42.0'
}

task dependencyUpdates {
    doLast {
        project.configurations.each { configuration ->
            configuration.resolutionStrategy {
                cacheChangingModulesFor 0, 'seconds'
                cacheDynamicVersionsFor 0, 'seconds'
            }
        }
    }
}

6. 运行以下命令来检查更新:

./gradlew dependencyUpdates

相关推荐

  1. Gradle 项目排查依赖冲突可以详细步骤

    2024-07-16 21:16:02       17 阅读
  2. 解决Gradle依赖冲突排除特定版本依赖

    2024-07-16 21:16:02       25 阅读
  3. Gradle依赖报告:项目依赖X光机

    2024-07-16 21:16:02       21 阅读
  4. 构建艺术:Gradle配置父子项目关系

    2024-07-16 21:16:02       25 阅读
  5. Conda冲突解决艺术:依赖寻找和谐

    2024-07-16 21:16:02       27 阅读
  6. Android 解决Gradle 三方依赖冲突方法

    2024-07-16 21:16:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 21:16:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 21:16:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 21:16:02       58 阅读
  4. Python语言-面向对象

    2024-07-16 21:16:02       69 阅读

热门阅读

  1. LeetCode题练习与总结:最大间距--164

    2024-07-16 21:16:02       21 阅读
  2. ThinkPHP6事件系统使用指南

    2024-07-16 21:16:02       22 阅读
  3. postman安装介绍

    2024-07-16 21:16:02       19 阅读
  4. echarts忽略Null值:使用echarts的connectNulls

    2024-07-16 21:16:02       23 阅读
  5. 知识蒸馏和知识图谱相结合的大模型微调方案

    2024-07-16 21:16:02       21 阅读
  6. uni-app开发时自定义导航栏

    2024-07-16 21:16:02       23 阅读
  7. 新质生产力和新质战斗力如何深度耦合

    2024-07-16 21:16:02       20 阅读
  8. 【Python】Arcpy将excel点生成shp文件

    2024-07-16 21:16:02       21 阅读
  9. Linux批量更改文件后缀名

    2024-07-16 21:16:02       20 阅读
  10. android gradle 开发与应用(一) : Gradle基础

    2024-07-16 21:16:02       17 阅读
  11. Python学习4---迭代器和生成器的区别

    2024-07-16 21:16:02       24 阅读
  12. Linux基本命令(续)

    2024-07-16 21:16:02       21 阅读
  13. HTTPS

    HTTPS

    2024-07-16 21:16:02      19 阅读