如何用gradle构造测试依赖图

时间:2017-08-10 01:48:02

标签: gradle

我处理一个大型项目(数百个模块,每个模块都有测试),并希望使用gradle依赖项构建测试依赖图。

例如,假设我有以下模块和依赖项:

core <----- thing1 <----- thing1a
     <----- thing2

如果我运行gradle thing1:dependencies,它会告诉我thing1 dependsOn core。相反,我想知道哪些模块依赖thing1,所以每当我更改thing1时,我都可以运行thing1和所有相关模块的测试。在上面的示例中,依赖模块将是thing1thing1a

希望有一种简单的方法可以在gradle中执行此操作(构建测试依赖关系图似乎很常见),但我还没有找到任何东西。

1 个答案:

答案 0 :(得分:1)

使用this gist(我没有写过)作为灵感,请在根build.gradle中考虑这一点:

subprojects { subproject ->
  task dependencyReport {
    doLast {
      def target = subproject.name
      println "-> ${target}"

      rootProject.childProjects.each { item ->
        def from = item.value
        from.configurations
            .compile
            .dependencies
            .matching { it in ProjectDependency }
            .each { to -> 
              if (to.name == target) {
                println "-> ${from.name}"
              }
            }
      }
    }
  }
}

使用您描述的项目结构运行示例:

$ gradle thing1:dependencyReport
:thing1:dependencyReport
-> thing1
-> thing1a