Gradle多项目递归任务的依赖性

问题描述

配置:

我有类似的项目限制

project1:
  implementation(1st_lvl_module1)
  implementation(1st_lvl_module2)
project2:
  implementation(1st_lvl_module1)
  implementation(1st_lvl_module2)
  implementation(1st_lvl_module3)
project3:
  implementation(1st_lvl_module2)

1st_lvl_module1:
  implementation(2nd_lvl_module1)
  implementation(2nd_lvl_module2)
1st_lvl_module2:
  implementation(2nd_lvl_module2)
1st_lvl_module3:
  implementation(2nd_lvl_module2)
  implementation(2nd_lvl_module3)

2nd_lvl_module1
2nd_lvl_module2
2nd_lvl_module3

问题:

我想为所有项目执行一些任务(例如gradle test)。它按顶级呼叫的要求工作。但是我想为每个项目独立执行它,这是一个问题。

如果我确实要求gradle project1:test,它将仅对project1执行,并且不包括1st_lvl_module1,该2nd_lvl_module1 and 2nd_lvl_module21st_lvl_module2也用{ {1}}


  • 我尝试实施自定义任务 例如
2nd_lvl_module2

并且通过这种方式,它也可以很好地应用于第一层次的实现。 tasks.register("testWithDependencies") { task -> task.dependsOn("test") configurations.forEach { it.dependencies.findAll { it instanceof ProjectDependency }.forEach { dependsOn ":${it.name}:test" } } } 将为gradle project1:testWithDependenciestestproject1执行1st_lvl_module1任务,但仍然忽略1st_lvl_module2

  • 如果我执行此任务 例如。
2nd_lvl_module1  2nd_lvl_module2

我的tasks.register("pd") { task -> configurations.forEach { println("Config name: ${it.name}") it.dependencies.findAll { it instanceof ProjectDependency }.forEach { def depProject = ((ProjectDependency)it).getDependencyProject() println("${depProject.name}") depProject.configurations.forEach { println("---Config name: ${it.name}") } } } } 包含project1配置,但所有implementation都不包含。实际上,1st_lvl_module*子模块列表看起来很差。


问题:

有人对多模块子项目的结构有相同的问题吗?还是存在最简单的递归调用方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)