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.

Dean Hiller
fonte

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.)

Peter Niederwieser
fonte
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
Dean Hiller
fonte
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
user1707414
fonte
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
icyerasor
fonte
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
Renato
fonte
5
gradlew -q :app:dependencies > dependencies.txt

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

abitcode
fonte
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
pscl
fonte
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.

Ryan Shillington
fonte
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