首页 > 解决方案 > Gradle - 如何从子项目中获取任务输出

问题描述

我是 Gradle 的新手。我有一个这样的示例项目结构:

rootA/
├── build.gradle
├── settings.gradle
└── subA
    └── build.gradle

subA项目中,有一个任务,让调用,goInsideSubA()这个任务可以返回一个字符串 (类似于)“this is inside subA project”

编辑:这是我的示例上下文:

//subA/build.gradle:

task goInsideSubA() {
    def string = "this is inside subA project"
}

// rootA/build.gradle

task showInsideSubA() {
    doLast {
        // how can I get the string from :subA:goInsideSubA task here
    }
}
// settings.gradle

include ':subA'

我的问题是如何让项目中的任务重用该字符串“ 是在 subA 项目中”showInsideSubA()rootA

谢谢

标签: gradlegroovybuildbuild.gradlegradlew

解决方案


我通过使用“任务属性”找到了一个解决方案:

//subA/build.gradle:

task goInsideSubA() {
    ext {
        myString = "this is inside subA project"
    }
}

// rootA/build.gradle

task showInsideSubA() {
    doLast {
        println tasks.getByPath(':subA:goInsideSubA').myString
    }
}
// settings.gradle

include ':subA'

结果:

$ gradle -q showInsideSubA
> this is inside subA project

推荐阅读