Kotlin 用户更新:2021 年 12 月 17 日:检测 Kotlin 项目中缺失或多余的构建依赖项:版本 1.0.9(最新)
我为 Kotlin 用户添加了 2 种配置。
使用插件 DSL:
plugins {
id("com.faire.gradle.analyze") version "1.0.9"
}
使用遗留插件应用程序:
buildscript {
repositories {
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
dependencies {
classpath("com.faire.gradle:gradle-kotlin-buildozer:1.0.9")
}
}
apply(plugin = "com.faire.gradle.analyze")
资源链接:
- https://plugins.gradle.org/plugin/com.faire.gradle.analyze https://plugins.gradle.org/plugin/com.faire.gradle.analyze
- https://github.com/Faire/gradle-kotlin-buildozer https://github.com/Faire/gradle-kotlin-buildozer
- https://discuss.gradle.org/t/detecting-unused-projects-dependency/25522 https://discuss.gradle.org/t/detecting-unused-projects-dependencies/25522
更新:2016 年 6 月 28 日:Android 对未使用依赖项的支持
In 2017年6月,他们已经发布了4.0.0 version
并重命名根项目名称"gradle-lint-plugin"
to
"nebula-lint-plugin"
。他们还添加了安卓支持
未使用的依赖项.
In May 2016Gradle 已经实现了Gradle lint 插件 https://github.com/nebula-plugins/gradle-lint-plugin用于查找和删除不需要的依赖项
Gradle Lint 插件:完整文档 https://github.com/nebula-plugins/gradle-lint-plugin/wiki
Gradle Lint 插件是一个可插入且可配置的 linter 工具,用于
识别并报告滥用或弃用的模式
Gradle 脚本和相关文件。
这个插件有各种规则。未使用的依赖规则 https://github.com/nebula-plugins/gradle-lint-plugin/wiki/Unused-Dependency-Rule是其中之一。它具有三个具体特征。
- 删除未使用的依赖项。
- 促进代码直接使用的传递依赖项
显式的一阶依赖关系。
- 将依赖项重新定位到“正确”的配置。
要应用该规则,请添加:
gradleLint.rules += 'unused-dependency'
的细节未使用的依赖规则 https://github.com/nebula-plugins/gradle-lint-plugin/wiki/Unused-Dependency-Rule在最后一部分给出。
要应用 Gradle lint 插件:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
或者:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
定义您想要检查哪些规则:
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
对于企业构建,我们建议在 init.gradle 脚本或通过 Gradle apply from 机制包含的 Gradle 脚本中定义 lint 规则。
对于多模块项目,我们建议在allprojects
block:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}
的细节未使用的依赖规则 https://github.com/nebula-plugins/gradle-lint-plugin/wiki/Unused-Dependency-Rule这部分给出了
要应用该规则,请添加:
gradleLint.rules += 'unused-dependency'
该规则检查从您的项目生成的已编译的二进制文件源集 https://docs.gradle.org/current/userguide/java_plugin.html#N14E7A查找类引用并将这些引用与您在文件中声明的依赖项进行匹配依赖关系 https://docs.gradle.org/current/userguide/java_plugin.html#N15632 block.
具体来说,该规则对依赖关系进行了以下调整:
1. 删除未使用的依赖项
- 像 com.amazonaws:aws-java-sdk 这样的家庭风格的 jar 被删除,因为
它们不包含任何代码
2. 将代码直接使用的传递依赖关系提升为显式一阶依赖关系
- 这会产生破坏家庭风格 JAR 文件的副作用,例如
com.amazonaws:aws-java-sdk,进入您实际所在的部分
使用并将它们添加为一阶依赖项
3. 将依赖项重新定位到“正确”的配置
- Webjar 已移至运行时配置
- 不包含任何类的 JAR 文件andMETA-INF 之外的内容是
移至运行时
- 'xerces'、'xercesImpl'、'xml-apis' 应始终处于运行时范围
- 服务提供者(包含 META-INF/服务的 JAR 文件),例如
如果没有任何可证明的情况,mysql-connector-java 将移至运行时
编译时参考
- 依赖项移至最高源集配置
可能的。例如,“junit”被重新定位到 testCompile,除非
在主要源集中对它有明确的依赖性(罕见)。
更新:以前的插件
为了您的信息,我想分享一下以前的插件
- 查找未使用的依赖项、已声明的和可传递的依赖项的 Gradle 插件是com.github.nullstress.dependency-analysis https://plugins.gradle.org/plugin/com.github.nullstress.dependency-analysis
But 其最新版本 1.0.3 于 2014 年 12 月 23 日创建。之后就没有任何更新了。
注意:我们的许多工程师都感到困惑这个插件 https://github.com/wfhartford/gradle-dependency-analyze像他们
只更新了版本号,没有更新其他内容。