【问题标题】:What is the syntax for a gradle subproject task depending on a parent project's task?根据父项目的任务,gradle 子项目任务的语法是什么?
【发布时间】:2017-07-03 17:43:10
【问题描述】:

我需要一些有关 Gradle 构建文件的帮助。我有一些依赖于顶层文件夹中的任务的子项目。我只需要执行test 任务并将其拆分为两个单独的测试任务。目前文件系统结构如下(tab 表示目录中的文件):

top-level-project-folder
    A.gradle
    B.gradle
    C-subproject-folder
        C.gradle
    D-subproject-folder
        D.gradle

A.gradle 的内容(重构前):

subprojects {
    tasks.test.dependsOn {
        bTask
    }
}
apply from: 'B.gradle'

C.gradle 的内容(重构前):

test {
    ...
}

重构后,C.gradle 需要如下所示:

test {
    ...
}

task runDifferentTests(type : Test) {
    ...
}

棘手的部分是C.gradletest 任务当前依赖于bTask。然而,在重构之后,C.gradletest 任务应该依赖于bTask,但是新的runDifferentTests 任务应该依赖于bTask。 (目前,D.gradletest 任务被标记为依赖于bTask,但它实际上并不依赖于它——我想删除这种依赖关系。两个子项目中唯一依赖于bTask 是新的 runDifferentTests 任务。)

我尝试了一些不同的方法,但似乎找不到可行的解决方案。

【问题讨论】:

    标签: gradle build dependencies


    【解决方案1】:

    只需删除subprojects 中的声明并直接在子项目中声明您的依赖项,在C.gradle 中:

    runDifferentTests.dependsOn rootProject.bTask
    

    【讨论】:

    • 起初我以为你的意思是runDifferentTests.dependsOn A.bTask,它给出了错误。我花了一分钟才意识到你的意思是字面意思rootProject。很高兴知道,非常感谢!
    • 这并不能真正回答问题。 OP 想知道父项目如何表达在子项目任务之前需要发生的事情。您的回答颠倒了需要发生的事情的责任/意识。
    • 我在问题中没有看到类似的内容。相反,标题是“gradle SUBproject 的语法”。此外,在 OP 选择某个问题后声称某些内容没有回答问题有点大胆。
    【解决方案2】:

    这里有几个语法解决方案:

    runDifferentTests.dependsOn (":bTask")
    
    runDifferentTests.dependsOn rootProject.bTask
    
    task runDifferentTests(type : Test, dependsOn: [":bTask"]) {
    ...
    }
    
    task runDifferentTests(type : Test) {
    dependsOn rootProject.bTask
    ...
    }
    
    //in the root build.gradle to apply to all subprojects at once.
    subprojects {
        runDifferentTests.dependsOn (":bTask")
    }
    
    runDifferentTests.dependsOn {
        tasks.findAll { task -> task.name.startsWith('bTask') }
    }
    

    : 可用于升级而不是 rootProject 取决于偏好和项目结构

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 2018-03-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多