Volevo trovare dipendenze inutilizzate nel mio progetto. C'è una funzione per questo in Gradle, come in Maven?
Volevo trovare dipendenze inutilizzate nel mio progetto. C'è una funzione per questo in Gradle, come in Maven?
Risposte:
A giugno 2017 , hanno rilasciato
4.0.0 version
e rinominato il nome del progetto radice"gradle-lint-plugin"
in"nebula-lint-plugin"
. Hanno anche aggiunto il supporto per Android alla dipendenza inutilizzata .
A maggio 2016 Gradle ha implementato il plug-in Gradle lint per trovare e rimuovere dipendenze indesiderate
Il plugin Gradle Lint è uno strumento di linter collegabile e configurabile per identificare e segnalare modelli di uso improprio o deprecazioni negli script Gradle e nei file correlati.
Questo plugin ha varie regole. La regola di dipendenza inutilizzata è una di queste. Ha tre caratteristiche specifiche.
Per applicare la regola, aggiungi:
gradleLint.rules += 'unused-dependency'
I dettagli della regola di dipendenza inutilizzata sono forniti nell'ultima parte.
Per applicare il plugin Gradle lint:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
In alternativa:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
Definisci le regole contro le quali desideri creare lanugine:
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
Per una build aziendale, si consiglia di definire le regole lint in uno script init.gradle o in uno script Gradle incluso tramite il meccanismo di applicazione Gradle da.
Per progetti multimodulo, consigliamo di applicare il plugin in un allprojects
blocco:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}
Per applicare la regola, aggiungi:
gradleLint.rules += 'unused-dependency'
La regola ispeziona i file binari compilati provenienti dai set di sorgenti del tuo progetto alla ricerca di riferimenti di classe e fa corrispondere quei riferimenti alle dipendenze che hai dichiarato nel blocco delle dipendenze .
Per le vostre gentili informazioni, desidero condividere i plugin precedenti
Ma la sua ultima versione 1.0.3 è stata creata il 23 dicembre 2014 . Dopo di che non ci sono aggiornamenti.
NB: Molti dei nostri ingegneri sono confusi riguardo a questo plugin poiché hanno aggiornato solo il numero di versione, nient'altro.
implementation
e api
), e, peggio ancora, raccomanda passando da quelli nuovi a quelli vecchi obsoleti (ad esempio: compile
, testCompile
e così via).
Il progetto menzionato nelle risposte precedenti sembra essere morto. Uso l' analisi della dipendenza graduale . La configurazione è semplice:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
Quindi fa:
$ gradle analyzeDependencies
Ho avuto molta fortuna usando il plugin Gradle Dependency Analysis . Per iniziare, aggiungi le seguenti due cose al tuo script di build Gradle.
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
e
apply plugin: "dependencyAnalysis"
Una volta che sono a posto, corri gradle analyze
. Se ci sono dipendenze inutilizzate, otterrai un errore di compilazione che mostra un output simile al testo seguente, più un elenco delle dipendenze inutilizzate (sia dichiarate che transitive). L'errore di compilazione è davvero utile se si desidera imporre che non vi siano dipendenze inutilizzate tramite una compilazione 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
Ho appena saputo di questo: https://plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
Dall'aspetto è in fase di sviluppo attivo, ma non l'ho ancora testato.
Modifica: in realtà è davvero fantastico, fornisce molti consigli (ad esempio se utilizzare api o implementazione)
Nota del redattore: questa risposta non è aggiornata. Si prega di vedere la risposta in alto .
Puoi provare il plugin Gradle com.github.nullstress.dependency-analysis
Crea snippet di script da utilizzare in tutte le versioni di Gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
apply plugin: "com.github.nullstress.dependency-analysis"
Crea snippet di script per il nuovo meccanismo di incubazione dei plugin introdotto in Gradle 2.1:
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
Inoltre, c'è un thread ( Esiste un equivalente Gradle di "dipendenza mvn: analizza"? ) Nel forum Gradle su questo argomento .
I progetti sulla maggior parte delle risposte storiche sono morti, ma l' analisi graduale della dipendenza sembra essere viva al 30/05/2016.