问题描述
配置:
我有类似的项目限制
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_module2
和1st_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:testWithDependencies
,test
和project1
执行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 (将#修改为@)