Eu queria encontrar dependências não utilizadas no meu projeto. Existe um recurso para isso em Gradle, como no Maven?
Eu queria encontrar dependências não utilizadas no meu projeto. Existe um recurso para isso em Gradle, como no Maven?
Respostas:
Em junho de 2017 , eles lançaram
4.0.0 version
e renomearam o nome do projeto raiz"gradle-lint-plugin"
para"nebula-lint-plugin"
. Eles também adicionaram suporte ao Android à dependência não utilizada .
Em maio de 2016, a Gradle implementou o plugin Gradle lint para encontrar e remover dependências indesejadas
O plug-in Gradle Lint é uma ferramenta de linter conectável e configurável para identificar e relatar padrões de uso indevido ou obsoleto em scripts Gradle e arquivos relacionados.
Este plugin possui várias regras. A regra de dependência não utilizada é uma delas. Possui três características específicas.
Para aplicar a regra, adicione:
gradleLint.rules += 'unused-dependency'
Detalhes da regra de dependência não utilizada são fornecidos na última parte.
Para aplicar o plugin Gradle lint:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
Alternativamente:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
Defina quais regras você gostaria de descartar:
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
Para uma construção corporativa, recomendamos definir as regras do lint em um script init.gradle ou em um script Gradle incluído no mecanismo de aplicação Gradle.
Para projetos de multimódulos, recomendamos a aplicação do plug-in em um allprojects
bloco:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}
Para aplicar a regra, adicione:
gradleLint.rules += 'unused-dependency'
A regra inspeciona os binários compilados que emanam dos conjuntos de fontes do seu projeto, procurando referências de classe e as correspondem às dependências que você declarou no seu bloco de dependências .
Para sua informação, quero compartilhar sobre plugins anteriores
Mas sua versão mais recente 1.0.3 foi criada em 23 de dezembro de 2014 . Depois disso, não há atualizações.
NB: Muitos de nossos engenheiros estão confusos com este plugin , pois atualizam apenas o número da versão, nada mais.
implementation
e api
) e, pior ainda, recomenda a alteração dos novos para os antigos obsoletos (por exemplo: compile
, testCompile
, etc.).
O projeto mencionado nas respostas anteriores parece estar morto. Eu uso gradle-dependency-analyse . A instalação é simples:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
Então faça:
$ gradle analyzeDependencies
Eu tive muita sorte usando o Plugin de Análise de Dependência Gradle . Para começar, adicione as duas coisas a seguir ao script de construção do Gradle.
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
e
apply plugin: "dependencyAnalysis"
Quando esses estiverem no lugar, corra gradle analyze
. Se houver dependências não utilizadas, você receberá uma falha de compilação que mostra uma saída semelhante ao texto abaixo, além de uma lista das dependências não utilizadas (declaradas e transitivas). A falha de compilação é realmente útil se você deseja impor que não deve haver dependências não utilizadas por meio de uma compilação de IC.
:foo:analyze FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':foo:analyze'.
> The project has unused declared artifacts
Acabei de aprender sobre este: https://plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
Pelo jeito, ele está em desenvolvimento ativo, mas ainda não o testei.
Edit: Na verdade, é bastante impressionante, fornece muitos conselhos (por exemplo, se deve usar API vs implementação)
Nota do Editor: Esta resposta está desatualizada. Por favor, veja a resposta superior .
Você pode experimentar o plug- in Gradle com.github.nullstress.dependency-analysis
Construa o snippet de script para uso em todas as versões do Gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
apply plugin: "com.github.nullstress.dependency-analysis"
Crie um snippet de script para o novo mecanismo de plug-in incubado e introduzido no Gradle 2.1:
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
Além disso, há um thread ( existe um equivalente Gradle de "dependência de mvn: analise"? ) No fórum Gradle sobre isso.
Os projetos na maioria das respostas históricas estão inoperantes, mas a análise da dependência gradle parece estar viva a partir de 30/05/2016.