代码之家  ›  专栏  ›  技术社区  ›  mike rodent

在Gradle实际执行任务之前,有没有办法打印任务图?

  •  0
  • mike rodent  · 技术社区  · 6 年前

    不完全是一个新手,但我试图挖掘一个更深入的了解一点…只是觉得这样做可能是个好主意。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Opal    6 年前

    界面 TaskExecutionGraph 提供 getAllTasks 方法(从文档中):

    返回包含在执行计划中的任务。任务按执行顺序返回。

    这个方法的输出似乎可以用来打印tas图。

        2
  •  0
  •   mike rodent    6 年前

    多亏了蛋白石,我做到了:

    gradle.taskGraph.whenReady {taskGraph ->
        println "Tasks"
        taskGraph.getAllTasks().eachWithIndex{ task, n ->
            println "${n + 1} $task"
            task.dependsOn.eachWithIndex{ depObj, m ->
                println "  ${ m + 1 } $depObj"
            }
        }
    } 
    

    Java构建的输出:

    Tasks
    1 task ':compileJava'
    2 task ':processResources'
    3 task ':classes'
      1 compileJava
      2 dirs
      3 processResources
    4 task ':jar'
    5 task ':assemble'
      1 org.gradle.api.internal.artifacts.DefaultPublishArtifactSet$ArtifactsTaskDependency@48db7705
    6 task ':compileTestJava'
    7 task ':processTestResources'
    8 task ':testClasses'
      1 processTestResources
      2 dirs
      3 compileTestJava
    9 task ':test'
    10 task ':check'
      1 value: task ':test'
    11 task ':build'
      1 check
      2 assemble
    

    对我来说,作为一个刚毕业的新手(一个新手),这太棒了!尽管它离开了我 轻微地 困惑:

    1)“build”只依赖于“check”和“assemble”,它们各有一个依赖项,每个依赖项都没有依赖项。那么它怎么知道要运行所有其他的任务(显然它必须这样做)。我一定是丢了什么东西。

    2)依赖项“dirs”和“org.gradle.api.internal.artifacts.DefaultPublishArtifactSet$artifactStaskDependency@48DB7705”是什么?更重要的是,这些东西到底是从哪里来的? getDependsOn() Set<Object> 所以这些可能不是 Task S.

    有很多要调查的…

    推荐文章