【问题标题】:What is the Gradle artifact dependency graph command?什么是 Gradle 工件依赖图命令?
【发布时间】:2012-08-30 13:38:06
【问题描述】:

我在Gradle docs看到了这条评论:

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

我有某种罐子被带进来,但我需要弄清楚它是从哪里来的。通常我会全局排除它,但我需要一些关于这里层次结构的信息。我如何像从 Ivy 和 Maven 一样获取这些信息?

更不用说有人将 Hibernate jars(很多)添加到我的 jar 列表中,我真的很想知道是谁,因为我没有使用 Hibernate 并尝试消除这种依赖关系。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    命令是gradle dependencies,它的输出在 Gradle 1.2 中得到了很大的改进。 (您今天已经可以尝试 1.2-rc-1。)

    【讨论】:

    • 实际上,我试过了......我意识到我的依赖项在我的最低级别的子项目中(即,其他人都依赖的那个)而不是在主项目中......不确定是否在这一点上是好是坏。
    • 您需要为您感兴趣的特定项目运行命令。通常,您会 cd 进入项目目录并从那里运行命令。
    • 这不适用于所有类型的项目。我得到“无配置”,需要运行其他东西来实现这一点。希望有一天 gradle 能处理这个问题,这样实际的命令就可以预测了。
    • 是否有包含传递依赖的标志?
    • 它们会自动包含在内。
    【解决方案2】:

    啊,由于我的主项目中没有依赖项,“gradle dependencies”只列出了那些而不是子项目的依赖项,所以正确的命令最终是

     gradle :<subproject>:dependencies
    

    所以对我来说这是

     gradle :master:dependencies
    

    【讨论】:

    • 如果你能说 -r 递归就好了
    【解决方案3】:

    如果您想查看项目和所有子项目在顶级 build.gradle 中使用的依赖项:

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

    然后调用gradle:

    gradle listAllDependencies
    

    【讨论】:

    • 有关该方法的更多详细信息,请参阅博文:solidsoft.wordpress.com/2014/11/13/…
    • 您可以将其添加到您的~/.gradle/init.gradle,而不是将其添加到每个构建中。然后它适用于您机器上的所有项目,但仅适用于您。
    【解决方案4】:

    如果你有很多配置,输出可能会很长。要仅显示运行时配置的依赖项,请运行

    gradle dependencies --configuration runtime
    

    【讨论】:

      【解决方案5】:

      如果你想递归包含子项目,你总是可以自己写:

      粘贴到顶层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
              }
          }
      }
      

      运行:

      gradle allDeps
      

      【讨论】:

        【解决方案6】:
        gradlew -q :app:dependencies > dependencies.txt
        

        将所有依赖写入文件dependencies.txt

        【讨论】:

          【解决方案7】:

          对于那些希望在 react-native 项目中调试 gradle 依赖项的人,命令是(从 projectname/android 执行)

          ./gradlew app:dependencies --configuration compile
          

          【讨论】:

            【解决方案8】:

            在最新版本的 Gradle(即 5+)中,如果您使用 --scan 标志运行构建,它会在您可以点击的浏览器中告诉您各种有用的信息,包括依赖项。

            gradlew --scan clean build
            

            它将分析该构建中发生的垃圾。挺好看的。

            【讨论】:

            • 但它只分析未运行完整图表的目标 :(.
            • 真的!这取决于你想要什么。我认为仅运行目标的依赖关系更加强大。它会告诉你为什么一组命令似乎做错了。
            • 我真的想要完整的图表,所以我不必测试每个节点 tbh....这变得相当乏味....即使需要一段时间,它更有用但我在较新的版本中看不到这样做的方法。
            猜你喜欢
            • 2012-08-30
            • 1970-01-01
            • 2016-03-17
            • 2015-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-13
            • 2017-11-11
            相关资源
            最近更新 更多