O que é o comando do gráfico de dependência de artefato Gradle?


123

Eu li este comentário nos documentos da Gradle :

To deal with problems due to version conflicts, reports with dependency graphs
are also very helpful. Such reports are another feature of dependency management.

Tenho algum tipo de jarro sendo trazido, mas preciso descobrir de onde ele vem. Normalmente, eu o excluiria globalmente, mas preciso de algumas informações sobre a hierarquia aqui. Como obtenho essas informações como Ivy e Maven?

Sem mencionar que alguém está trazendo jarros do Hibernate (muito) para minha lista de jar e eu realmente quero saber quem, já que não estou usando o Hibernate, e tentar eliminar essa dependência.

Respostas:


127

O comando é gradle dependenciese sua saída é muito melhorada no Gradle 1.2. (Você já pode experimentar o 1.2-rc-1 hoje.)


na verdade, tentei isso ... Percebi que minhas dependências estão no meu subprojeto de nível mais baixo (ou seja, aquele em que todos os outros dependem) e não no projeto principal ... não tenho certeza se isso é bom ou ruim nesse momento .
Dean Hiller

Você precisa executar o comando para o projeto específico em que está interessado. Normalmente, você entra no diretório do projeto e executa o comando a partir daí.
Peter Niederwieser

9
Isso não funciona em todos os tipos de projetos. Estou recebendo 'Sem configurações' e preciso executar outra coisa para fazer isso funcionar. Espero que um dia o gradle lide com isso, para que os comandos reais sejam previsíveis.
R. van Twisk

2
Existe um sinalizador para incluir dependências transitivas?
Thetwan 7/08

1
Eles são incluídos automaticamente.
Peter Niederwieser

121

Ah, como eu não tinha dependências no meu projeto mestre, "dependências gradle" lista apenas essas dependências e não as subprojetos, portanto o comando correto acabou sendo

 gradle :<subproject>:dependencies

então para mim isso foi

 gradle :master:dependencies

20
Bom se você pudesse dizer -rpara recursiva
Blundell

38

Se você deseja ver dependências no projeto e todos os subprojetos usados ​​em seu build.gradle de nível superior:

subprojects {
    task listAllDependencies(type: DependencyReportTask) {}
}

Em seguida, chame gradle:

gradle listAllDependencies

2
Mais detalhes sobre essa abordagem na postagem do blog: solidsoft.wordpress.com/2014/11/13/…
Marcin Zajączkowski

9
Você pode adicionar isso ao seu, em ~/.gradle/init.gradlevez de adicioná-lo a cada compilação. Depois, funciona para todos os projetos em sua máquina, mas apenas para você.
derekv

24

Se você tiver muitas configurações, a saída poderá ser bastante longa. Para mostrar apenas dependências para a configuração do tempo de execução, execute

gradle dependencies --configuration runtime

15

Se você deseja que recursivos incluam subprojetos, sempre é possível escrevê-lo:

Cole no nível superior build.gradle:

task allDeps << {
    println "All Dependencies:"
    allprojects.each { p ->
        println()
        println " $p.name ".center( 60, '*' )
        println()
        p.configurations.all.findAll { !it.allDependencies.empty }.each { c ->
            println " ${c.name} ".center( 60, '-' )
            c.allDependencies.each { dep ->
                println "$dep.group:$dep.name:$dep.version"
            }
            println "-" * 60
        }
    }
}

Correr com:

gradle allDeps

5
gradlew -q :app:dependencies > dependencies.txt

Irá gravar todas as dependências no arquivo dependencies.txt


4

Para aqueles que procuram depurar dependências gradle em react-nativeprojetos, o comando é (executado a partir de projectname/android)

./gradlew app:dependencies --configuration compile

0

Nas versões recentes do Gradle (por exemplo, 5+), se você executar sua compilação com o --scansinalizador, ele fornecerá todos os tipos de informações úteis, incluindo dependências, em um navegador no qual você pode clicar.

gradlew --scan clean build

Ele analisará a porcaria do que está acontecendo nessa compilação. É bem legal.


1
mas só analisa os alvos que não corriam o gráfico completo :(.
Dean Hiller

Verdade! Depende do que você quer. Eu acho que dependências apenas para os alvos executados são ainda mais poderosas. Ele mostrará por que um conjunto de comandos parece fazer a coisa errada.
Ryan Shillington

Eu realmente quero o gráfico completo, para que eu não precise testar cada nó tbh .... isso fica muito entediante ... mesmo que demore um pouco, é mais útil, mas não vejo uma maneira de fazê-lo nas versões mais recentes.
Dean Hiller
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.