プロジェクトで未使用の依存関係を見つけたかった。Mavenのように、Gradleにこの機能はありますか?
プロジェクトで未使用の依存関係を見つけたかった。Mavenのように、Gradleにこの機能はありますか?
回答:
2017年6月、彼らはをリリースし
4.0.0 version
、ルートプロジェクト名"gradle-lint-plugin"
をに変更しました"nebula-lint-plugin"
。また、未使用の依存関係にAndroidのサポートを追加しました。
2016年5月、 Gradleは不要な依存関係を見つけて削除するためのGradle lintプラグインを実装しました
Gradle Lintプラグインは、Gradleスクリプトと関連ファイルの誤用や非推奨のパターンを識別してレポートするための、プラグイン可能な構成可能なリンターツールです。
このプラグインにはさまざまなルールがあります。未使用の依存関係ルールもその1つです。これには3つの特徴があります。
ルールを適用するには、以下を追加します。
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スクリプトでlintルールを定義することをお勧めします。
マルチモジュールプロジェクトの場合、プラグインを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ビルドスクリプトに次の2つを追加します。
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 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"
Gradle 2.1で導入された新しいインキュベーティングプラグインメカニズムのスクリプトスニペットをビルドします。
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
また、これに関するGradleフォーラムにはスレッド(「mvn dependency:analyze」に相当するGradleはありますか?)があります。
ほとんどの歴史的回答のプロジェクトは死んでいますが、gradle-dependency-analyzeは2016-05-30の時点で生きているようです。