Saya ingin menemukan dependensi yang tidak terpakai dalam proyek saya. Apakah ada fitur untuk ini di Gradle, seperti di Maven?
Saya ingin menemukan dependensi yang tidak terpakai dalam proyek saya. Apakah ada fitur untuk ini di Gradle, seperti di Maven?
Jawaban:
Pada bulan Juni 2017 , mereka telah merilis
4.0.0 version
dan mengganti nama proyek root"gradle-lint-plugin"
menjadi"nebula-lint-plugin"
. Mereka juga telah menambahkan dukungan Android ke unused-dependency .
Pada Mei 2016, Gradle telah mengimplementasikan plugin Gradle lint untuk menemukan dan menghapus dependensi yang tidak diinginkan
Plugin Gradle Lint adalah alat linter yang dapat dicolokkan dan dikonfigurasi untuk mengidentifikasi dan melaporkan pola penyalahgunaan atau penghentian dalam skrip Gradle dan file terkait.
Plugin ini memiliki berbagai aturan. Aturan Ketergantungan yang Tidak Digunakan adalah salah satunya. Ini memiliki tiga karakteristik khusus.
Untuk menerapkan aturan tersebut, tambahkan:
gradleLint.rules += 'unused-dependency'
Rincian Aturan Ketergantungan yang Tidak Digunakan diberikan di bagian terakhir.
Untuk menerapkan plugin Gradle lint:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
Kalau tidak:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
Tentukan aturan mana yang ingin Anda linting:
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
Untuk build perusahaan, sebaiknya tentukan aturan lint dalam skrip init.gradle atau dalam skrip Gradle yang disertakan melalui mekanisme Gradle apply from.
Untuk proyek multimodule, kami merekomendasikan untuk menerapkan plugin dalam satu allprojects
blok:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}
Untuk menerapkan aturan tersebut, tambahkan:
gradleLint.rules += 'unused-dependency'
Aturan tersebut memeriksa biner terkompilasi yang berasal dari kumpulan sumber proyek Anda mencari referensi kelas dan mencocokkan referensi tersebut dengan dependensi yang telah Anda deklarasikan di blok dependensi Anda .
Sekadar informasi, saya ingin berbagi tentang plugin sebelumnya
Namun versi terbarunya 1.0.3 dibuat pada 23 Desember 2014 . Setelah itu tidak ada pembaruan apa pun.
NB: Banyak teknisi kami yang bingung tentang plugin ini karena mereka hanya memperbarui nomor versi, tidak ada yang lain.
implementation
dan api
), dan bahkan lebih buruk, merekomendasikan berubah dari yang baru dengan yang usang lama (misalnya: compile
, testCompile
, dll).
Proyek yang disebutkan dalam jawaban sebelumnya tampaknya sudah mati. Saya menggunakan analisis-ketergantungan-gradle . Penyiapannya sederhana:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
Kemudian lakukan:
$ gradle analyzeDependencies
Saya sangat beruntung menggunakan Plugin Analisis Ketergantungan Gradle . Untuk memulainya, tambahkan dua hal berikut ke skrip build Gradle Anda.
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
dan
apply plugin: "dependencyAnalysis"
Setelah itu di tempatnya, larilah gradle analyze
. Jika ada dependensi yang tidak digunakan, Anda akan mendapatkan kegagalan build yang menunjukkan output yang mirip dengan teks di bawah ini, ditambah daftar dependensi yang tidak digunakan (baik yang dideklarasikan maupun transitif). Kegagalan build sangat berguna jika Anda ingin memastikan bahwa tidak ada dependensi yang tidak digunakan melalui build 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
Saya baru belajar tentang yang ini: https://plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
Dari kelihatannya ini sedang dalam pengembangan aktif, tapi saya belum mengujinya.
Sunting: Sebenarnya ini cukup luar biasa, ini memberikan banyak saran (misalnya apakah akan menggunakan api vs implementasi)
Catatan Editor: Jawaban ini sudah ketinggalan zaman. Silakan lihat jawaban teratas .
Anda dapat mencoba plugin Gradle com.github.nullstress.dependency-analysis
Buat cuplikan skrip untuk digunakan di semua versi Gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
apply plugin: "com.github.nullstress.dependency-analysis"
Buat cuplikan skrip untuk mekanisme plugin baru yang inkubasi yang diperkenalkan di Gradle 2.1:
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
Selain itu, ada utas ( Apakah ada Gradle yang setara dengan "mvn dependency: analysis "? ) Di forum Gradle tentang ini.
Proyek dengan sebagian besar jawaban historis sudah mati, tetapi analisis ketergantungan bertahap tampaknya masih berjalan pada 2016-05-30.