我想在我的项目中找到未使用的依赖项。像Maven一样,在Gradle中有此功能吗?
我想在我的项目中找到未使用的依赖项。像Maven一样,在Gradle中有此功能吗?
Answers:
2017年6月,他们发布了
4.0.0 version
,并将根项目名称重命名"gradle-lint-plugin"
为"nebula-lint-plugin"
。他们还向未使用的依赖项添加了Android支持。
在2016年5月, Gradle实施了Gradle lint插件来查找和删除不需要的依赖项
Gradle Lint插件是一个可插入且可配置的Linter工具,用于识别和报告Gradle脚本和相关文件中的滥用或弃用模式。
这个插件有各种规则。未使用的依赖性规则就是其中之一。它具有三个特定的特征。
要应用规则,请添加:
gradleLint.rules += 'unused-dependency'
最后一部分给出了未使用的依赖规则的详细信息。
要应用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脚本中定义皮棉规则。
对于多模块项目,我们建议在一个allprojects
块中应用该插件:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}
要应用规则,请添加:
gradleLint.rules += 'unused-dependency'
该规则检查从项目源集中产生的已编译二进制文件,以查找类引用,并将这些引用与您在依赖项块中声明的依赖项进行匹配。
对于您的信息,我想分享一下以前的插件
但其最新版本1.0.3创建于2014年12月23日。之后,没有任何更新。
注意:我们的许多工程师对此插件感到困惑,因为他们只更新了版本号,而没有其他任何更新。
implementation
和api
),甚至更糟的是,建议从换新的旧过时的那些变化(如:compile
,testCompile
等)。
先前答案中提到的项目似乎已经死了。我使用gradle-dependency-analyze。设置很简单:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
然后做:
$ gradle analyzeDependencies
我使用Gradle Dependency Analysis Plugin非常幸运。要开始使用它,请将以下两件事添加到您的Gradle构建脚本中。
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
和
apply plugin: "dependencyAnalysis"
一旦到位,请运行gradle analyze
。如果有未使用的依赖项,您将得到一个生成失败,显示类似于以下文本的输出,以及未使用的依赖项列表(已声明和可传递)。如果要通过CI构建强制不存在任何未使用的依赖项,则构建失败非常方便。
:foo:analyze FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':foo:analyze'.
> The project has unused declared artifacts
我刚刚了解了这一点:https : //plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
从外观上看,它正在积极开发中,但我尚未对其进行测试。
编辑:实际上它非常棒,它提供了很多建议(例如,是否使用api与实现)
编者注:该答案已过期。请查看最上面的答案。
您可以尝试com.github.nullstress.dependency-analysis Gradle插件
在所有Gradle版本中使用的构建脚本代码段:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
apply plugin: "com.github.nullstress.dependency-analysis"
为Gradle 2.1中引入的新的,可孵化的插件机制生成脚本片段:
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
另外,在Gradle论坛中有一个关于此的线程(是否有Gradle等效于“ mvndependency:analyze”?)。