一款检查Gradle依赖配置是否冲突的插件

栏目: 编程工具 · 发布时间: 4年前

内容简介:在平时的开发中,大家经常会遇到因为gradle的构建配置错误引起的各种奇奇怪怪的问题,每次梳理依赖关系都需要很长时间,为了更方便的找出项目中的依赖冲突,专门开发了这个插件。完整的插件使用方式,可以参考项目的事例Sample的根目录的build.gradle

背景介绍

在平时的开发中,大家经常会遇到因为gradle的构建配置错误引起的各种奇奇怪怪的问题,每次梳理依赖关系都需要很长时间,为了更方便的找出项目中的依赖冲突,专门开发了这个插件。

使用方法:

在项目中添加插件

  • 在repositories中添加插件仓库:

    repositories {
          maven { url "https://plugins.gradle.org/m2/" }
      }
  • 引入插件,并添加插件相关配置

    你可以选择在每个project都添加一份,也可以选择参考demo,在根build.gradle的subprojects中添加

    subprojects {
        /************************** 应用插件 Start ***********************/
        //应用插件
        apply plugin: 'com.bihe0832.gradleDependenciesCheck'
        //配置插件相关配置
        GradleDependenciesCheckConfig {
            /**
             * 检查结果提示类型:
             *  1 以warning形式在命令行提示
             *  2 直接编辑报错,并提示错误
             */
            showResultType = 2
        }
        /************************** 应用插件 End ***********************/
    	
    }
  • 将插件添加到其余系统任务中自动执行

    afterEvaluate { Project project ->
          project.getTasks().getByName('clean').dependsOn("checkGradleDependencies")
          project.getTasks().getByName('preBuild').dependsOn("checkGradleDependencies")
      }

完整的插件使用方式,可以参考项目的事例Sample的根目录的build.gradle

运行插件

checkGradleDependencies
./gradlew checkGradleDependencies

运行效果

  • 在命令行运行效果如下:

    > Task :app:listGradleDependencies FAILED
      listGradleDependencies start ...
    	
      FAILURE: Build failed with an exception.
    	
      * What went wrong:
      Execution failed for task ':app:listGradleDependencies'.
      > [ERROR] org.jetbrains.kotlin:kotlin-stdlib has different version: 
        	1.3.0 found from: 
        	 	 app:org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.0
        	 	 app:Sample:sdk:unspecified
        	1.2.71 found from: 
        	 	 app:org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.71
    	
    	
      * Try:
      Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    	
      * Get more help at https://help.gradle.org
    	
      Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
      Use '--warning-mode all' to show the individual deprecation warnings.
      See https://docs.gradle.org/4.10/userguide/command_line_interface.html#sec:command_line_warnings
    	
      BUILD FAILED in 1s
      1 actionable task: 1 executed
      [ERROR] org.jetbrains.kotlin:kotlin-stdlib has different version: 
          1.3.0 found from: 
           	 app:org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.0
           	 app:Sample:sdk:unspecified
          1.2.71 found from: 
           	 app:org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.71
    	
      4:39:17 PM: Task execution finished 'listGradleDependencies'.

工程介绍

代码目录

Gradle-Dependencies-Check
	│
	├─── Gradle-Dependencies-Check-Plugin 构建依赖自动检查插件源码
	|
	├─── Sample 构建依赖自动检查插件测试用Demo
	│
	└─── README.md 项目介绍

使用方法

  • 如何修改配置及运行工程,请参考本人博客: 终端基于gradle的开源项目运行环境配置指引

  • 运行流程:

    • 启动Gradle-Dependencies-Check-Plugin,编辑通过错以后,执行Task uploadArchives
    • 启动Sample,修改根目录build.gradle的repositories,修改后如下:

      repositories {
                maven { url './libs/maven_local' }
        //        maven { url "https://plugins.gradle.org/m2/" }
        }
    • 在Sample运行clean,查看效果

后续规划

  • 检查所有依赖的最新版,然后推荐更新

  • 推荐把support等相关库都切换到了androidx

  • 对于一些需要版本对应的,提示对应。例如:databing compile依赖的版本号与Android Gradle Plugin版本保持一致等

参考及文章

  • 开发第一个gradle插件(待写)

  • gradle插件调试方法(待写)

  • 如何发布gradle插件到gradle插件库(待写)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的呐喊

程序员的呐喊

[美]Steve Yegge / 徐旭铭 / 人民邮电出版社 / 2014-5-1 / 45.00元

《程序员的呐喊》的作者是业界知名的程序员—来自google的steve yegge,他写过很多颇富争议的文章,其中有不少就收录在这本书中。本书是他的精彩文章的合集。 《程序员的呐喊》涉及编程语言文化、代码方法学、google公司文化等热点话题。 对工厂业界的各种现象、技术、趋势等,作者都在本书中表达了自己独特犀利的观点。比如java真的是一门优秀的面向对象语言吗?重构真的那么美好吗?强......一起来看看 《程序员的呐喊》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换