gpt4 book ai didi

android - 依赖项的 Gradle 多项目递归任务

转载 作者:行者123 更新时间:2023-12-03 05:20:17 27 4
gpt4 key购买 nike

配置:
我有这样的多项目限制

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_module22nd_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_module11st_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*没有。其实 configurations子模块列表看起来很差。

    问题:
    有人对多模块子项目结构有同样的问题吗?或者也许存在最简单的递归调用方法?

    最佳答案

    解决方案 :
    文件例如。 testWithDependency.gradle内容如下:

    tasks.register("testWithDependencies") { task ->
    task.dependsOn("test")
    configurations.forEach {
    it.dependencies.findAll { it instanceof ProjectDependency }.forEach {
    dependsOn ":${it.name}:testWithDependencies"
    }
    }
    }
    应申请 到底 (当验证项目的依赖关系时) gradle.build对于每个项目和模块。
    该解决方案还可以针对多个任务进行扩展。

    关于android - 依赖项的 Gradle 多项目递归任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63804556/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com