dependency analysis gradle plugin

2025-12-11 0 694

检测未使用和滥用的依赖

dependency analysis gradle plugin (DAGP,Née依赖分析Android Gradle插件)检测到以下内容:

  1. 未使用的依赖性

  2. 使用的及依赖性(您可能需要直接声明)。

  3. 在错误的配置上声明的依赖项( api vs implementationcompileOnly等)。

作为副作用,该插件还可以告诉您项目的ABI,并生成代表依赖关系图的各种视图的GraphViz文件。这些副作用目前主要是无证件的内部行为,但对于某些高级用户来说可能很有趣。

建立健康

除了与依赖关系相关的建议(见上文)外,DAGP还提供了其他建议,以帮助维护您的“建立健康”。这包括检测:

  1. 不必要的插件(目前仅kapt )。

  2. 不必要地使用Android插件的子标记(“模块”),而不是“正常”的JVM库。

兼容性

请参阅Wiki,以获取有关Gradle,Android Gradle插件等版本的信息,该插件与此插件兼容。

添加到您的项目并使用

有关详细说明,请参阅Wiki。

最简单的方法是添加以下内容:

settings.gradle.kts

plugins {
  id( \" com.autonomousapps.build-health \" ) version \" <<latest_version>> \"
}
重要的 如果您的项目使用Kotlin或Android(或两者都),则这些插件也必须加载在“设置脚本classloader”(或父级)中。有关更多信息,请参见Wiki

快速启动,只需运行以下内容:

 ./gradlew buildHealth

您可能会看到以下输出:

 >任务:BuildHealth失败

失败:构建失败,例外。

*出了什么问题:
执行失败了任务\':buildHealth\'。
>存在违规行为。请参阅文件:////path/to/project/build/reports/depperency-analisy/build-health-report.txt

如果您希望将此(可能很长的)报告打印到控制台上,请将其添加到您的gradle.properties文件:

gradle.properties

 dependency.analysis.print.build.health=true 

存储库

该插件从2.19.0的发行版和2.18.1-snapshot,此插件使用https://central.s*o*n*atype.com。要将此插件添加到您的项目中,请使用以下存储库。

settings.gradle.kts

pluginManagement {
  repositories {
    // releases
    mavenCentral()
    // snapshots
    maven(url = \" https://central.*s*onat*ype.com/repository/maven-snapshots/ \" )
    // Once you start using pluginManagement, you should explicitly add this,
    // unless you NEVER want to use this repository
    gradlePluginPortal()
  }
}

更高级的用法

您不必通过设置脚本将此插件应用于所有项目。它也只能应用于特定的子标题。在这种情况下,还必须将其应用于root Build脚本。

root build.gradle.kts

plugins {
  id( \" com.autonomousapps.dependency-analysis \" ) version \" <<latest_version>> \"
}

sub/project/build.gradle.kts

plugins {
  id( \" com.autonomousapps.dependency-analysis \" )
}
重要的 如果您的项目使用Kotlin或Android(或两者),则这些插件也必须加载在Root Build Script Loader(或父级)中。有关更多信息,请参见Wiki

项目健康

可以按照projectHealth任务对单个模块进行分析。例如:

 ./gradlew App:ProjectHealth

自动解决依赖性问题

插件通常会报告项目依赖性声明的许多问题。由于手动修复可能很乏味,因此该插件还提供了一项任务以使所有问题自动化。

 ./gradlew fixDependencies

fixDependencies任务已在应用插件的每个项目上注册。按照上述运行它将在每个子项目中运行任务。另请参阅一键依赖项修复

仅修复一些依赖性问题

在某些情况下,一个通过以一通解决所有问题可能是不可行的。也许您有一个非常大的项目,或者您发布了库,并且您知道更改依赖性声明也会改变库的元数据,这可能会破坏消费者。为了支持此用例, fixDependencies任务采用可选标志来告诉它,从本质上讲,仅进行“安全”更改。

 ./gradlew fixDependencies-升级

有了此标志, fixDependencies任务将不会删除或“降级”任何依赖性声明。它将仅添加或“升级”声明(例如,从implementationapi )。

在增量的推出方案中,可以想象使用--upgrade标志,然后更新所有消费者,然后最终删除标志并删除所有未使用的依赖项。

警告

如果分析有任何错误,那么修复依赖性声明会使您的构建破坏(但手动修复也是如此)。如果您遇到此问题,请提出问题。

此外,重写功能基于简化的Gradle Groovy DSL语法,该语法将在复杂的Groovy构建脚本的存在下失败。 Kotlin DSL语法对整个Kotlin语言都有全面的支持,这使得重写功能对Gradle Kotlin DSL脚本的工作更大。 Gradle Groovy DSL没有计划做同样的计划。

原因

您可能会很好奇插件为什么会发出(或不发出)有关某些依赖性的建议。你可以问为什么:

 ./gradlew lib:原因-ID com.squareup.okio:okio:2.2.2 (1)
>任务:lib:原因

-----------------------------------------------------------
您询问了依赖项\'com.squareup.okio:okio:2.2.2\'。
关于这种依赖性没有任何建议。
-----------------------------------------------------------

最短的路径从:lib到com.squareup.okio:okio:2.2.2:
:lib
\\ --- com.squareup.okio:okio:2.2.2

来源:主
-----------------
*公开okio.bufferedsource类(暗示API)。
  1. 版本字符串是可选的。

基本配置

有关如何配置插件的详细信息,请参见Wiki。

要配置插件,请使用dependencyAnalysis扩展。

build.gradle.kts

dependencyAnalysis {
  // Declare that the plugin should use typesafe project accessors. False by default.
  useTypesafeProjectAccessors( true )

  // Configure ABI exclusion rules.
  abi { .. . }

  // Configure the severity of issues, and exclusion rules, for potentially the entire project.
  issues { .. . }

  // Configure issue reports.
  reporting {
    // false by default. Setting to true results in
    // the advice report being emitted to console.
    printBuildHealth( true )
  }

  // Configure dependency structure rules (bundles, mapping, etc).
  structure { .. . }

  // Configure usage rules.
  usage { .. . }
}

编程用法和API保证

从版本3.0.0(未发行)中,该插件在api/api.txt中包含API定义。从那时起,任何向后兼容的更改都将导致主要版本发布。请注意,某些代码仅由于工具限制而公开;此代码大部分都在internal软件包中,但是com.autonomousapps.tasks也被认为是“内部”。这些内部软件包中任何API的使用自身都有您的风险。

对于仅应用插件并运行主要任务( buildHealthprojectHealthreason等)的典型用户,应将主要版本视为非事件。对于这些用户,“ API”只是这些主要任务。

出版物

以下是已发表讨论此插件的文章 /博客文章的列表:

  1. 适当的护理和喂养您的gradle构建

  2. dependency analysis gradle plugin :使用字节码分析查找未使用的依赖项

  3. dependency analysis gradle plugin :什么是ABI?

  4. 减少我的Gradle插件对配置时间的影响:旅程

  5. 单击依赖项修复

这些插件也已在这些新闻通讯中出现:

  1. 格拉尔,2024年10月

  2. 格拉尔,2022年5月

  3. 格拉尔,2020年9月

  4. 格拉尔,2020年8月

  5. Android每周,第423期

  6. 格拉尔,2020年7月

  7. 格拉尔,2020年6月

有关此插件的播客剧集可以在此处找到:

  1. 开发人员的面包店,第31集

有关此插件的YouTube视频:

  1. 了解Gradle#28 – 带有依赖性分析插件的清洁编译类路径

下载源码

通过命令行克隆项目:

git clone https://github.com/autonomousapps/dependency-analysis-gradle-plugin.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 dependency analysis gradle plugin https://www.zuozi.net/34465.html

testng
上一篇: testng
loom
下一篇: loom
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务