我想在我的项目中找到未使用的依赖项。在maven中是否有像graven这样的功能?
答案 0 :(得分:57)
在 2017年6月中,他们发布了
String sp = "";
并将根项目名称4.0.0 version
重命名为"gradle-lint-plugin"
。他们还添加了 Android支持 未使用的依赖性强>
在 2016年5月 Gradle已实施gradle lint plugin以查找和删除不需要的依赖项
Gradle Lint插件是一个可插入且可配置的linter工具 识别和报告中的滥用或弃用模式 Gradle脚本和相关文件。
此插件有各种规则。 Unused Dependency Rule就是其中之一。它有3个特定的特征。
要应用规则,请添加:
"nebula-lint-plugin"
最后一部分给出了Unused Dependency Rule的详细信息。
要应用gradle lint插件:
gradleLint.rules += 'unused-dependency'
<强>可替换地:强>
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'
对于企业版本,我们建议在init.gradle脚本或通过Gradle apply from mechanism包含的gradle脚本中定义lint规则。
对于多模块项目,我们建议在allprojects块中应用插件:
gradleLint.rules = ['all-dependency'] // add as many rules here as you'd like
要应用规则,请添加:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // add as many rules here as you'd like
}
该规则检查从您的项目source sets发出的已编译二进制文件,以查找类引用,并将这些引用与您在dependencies块中声明的依赖项进行匹配。
1)删除未使用的依赖项
2)将代码直接使用的传递依赖项提升为显式的第一顺序依赖项
3)将依赖项重新定位到&#39;更正&#39;构造强>
有关您的善意信息,我想分享以前的插件
但它的最新版本1.0.3创建于2014年12月23日。之后没有更新。
N.B:我们的许多工程师都对this plugin感到困惑 只更新了版本号。
答案 1 :(得分:8)
我使用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
答案 2 :(得分:7)
早期答案中提到的项目似乎已经死了。我使用gradle-dependency-analyze。设置很简单:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
然后做:
$ gradle analyzeDependencies
答案 3 :(得分:4)
我刚刚了解了以下内容:https://plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
从外观上看,它正在积极开发中,但我尚未对其进行测试。
编辑: 实际上,它非常棒,它提供了很多建议(例如,是否使用api和实现)
答案 4 :(得分:1)
编辑注:此答案已过期,请参阅最佳答案。
您可以尝试使用com.github.nullstress.dependency-analysis gragle插件
构建脚本代码段,以便在所有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论坛中有一个关于此的帖子(Is there a Gradle equivalent of "mvn dependency:analyze"?)。
答案 5 :(得分:1)
大多数历史答案的项目都已失效,但在撰写本文时gradle-dependency-analyze似乎还活着(最后一次提交是两天前)。
答案 6 :(得分:0)
这个 Gradle 插件是全新的,应该可以很好地工作。它支持 Kotlin DSL,并且应该同时支持 Java 和 Kotlin 项目