Ale*_*niy 106 java dependency-management gradle maven
我想在我的项目中找到未使用的依赖项.像maven一样,在Gradle中是否有任何功能?
Sky*_*ker 62
在2017年六月,他们已经发布了
4.0.0 version
,并更名为根项目名称"gradle-lint-plugin"
来"nebula-lint-plugin"
.他们还为未使用的依赖添加了Android支持.
2016年5月, Gradle实施了gradle lint插件,用于查找和删除不需要的依赖项
Gradle Lint插件是一个可插入且可配置的linter工具,用于识别和报告Gradle脚本和相关文件中的滥用或弃用模式.
这个插件有各种规则.未使用的依赖规则就是其中之一.它有3个特定的特征.
要应用规则,请添加:
gradleLint.rules += 'unused-dependency'
Run Code Online (Sandbox Code Playgroud)
最后部分给出了未使用依赖关系规则的详细信息.
要应用gradle lint插件:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
Run Code Online (Sandbox Code Playgroud)
或者:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
Run Code Online (Sandbox Code Playgroud)
定义您要对哪些规则进行处理:
gradleLint.rules = ['all-dependency'] // add as many rules here as you'd like
Run Code Online (Sandbox Code Playgroud)
对于企业版本,我们建议在init.gradle脚本或通过Gradle apply from mechanism包含的gradle脚本中定义lint规则.
对于多模块项目,我们建议在allprojects块中应用该插件:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // add as many rules here as you'd like
}
Run Code Online (Sandbox Code Playgroud)
要应用规则,请添加:
gradleLint.rules += 'unused-dependency'
Run Code Online (Sandbox Code Playgroud)
该规则检查从项目的源集中发出的编译二进制文件,以查找类引用,并将这些引用与您在依赖项块中声明的依赖项进行匹配.
1)删除未使用的依赖项
2)提升代码直接使用的传递依赖关系到显式的第一顺序依赖关系
3)将依赖项重定位到"正确"配置
对于您的类型信息,我想分享以前的插件
但它的最新版本1.0.3创建于2014年12月23日.之后没有更新.
注意:我们的许多工程师都对这个插件感到困惑,因为他们只更新了版本号.
我使用Gradle依赖性分析插件有很多运气.要开始使用它,请将以下两项内容添加到Gradle构建脚本中.
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
Run Code Online (Sandbox Code Playgroud)
和
apply plugin: "dependencyAnalysis"
Run Code Online (Sandbox Code Playgroud)
一旦到位,运行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
Run Code Online (Sandbox Code Playgroud)
早期答案中提到的项目似乎已经死了.我使用gradle-dependency-analyze.设置很简单:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
Run Code Online (Sandbox Code Playgroud)
然后做:
$ gradle analyzeDependencies
Run Code Online (Sandbox Code Playgroud)
我刚刚了解了这个:https : //plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
从外观上看,它正在积极开发中,但我还没有对其进行测试。
编辑:实际上它非常棒,它提供了很多建议(例如是否使用 api vs 实现)
编者注:这个答案已经过时了。请参阅最上面的答案。
您可以尝试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"
Run Code Online (Sandbox Code Playgroud)
为 Gradle 2.1 中引入的新的孵化插件机制构建脚本片段:
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
Run Code Online (Sandbox Code Playgroud)
另外, Gradle 论坛中有一个关于此问题的主题(Is there a Gradle相当于“mvn dependency:analyze”? )。
归档时间: |
|
查看次数: |
34873 次 |
最近记录: |