Gradle:如何在多项目构建中共享常见任务?

时间:2016-04-29 21:17:23

标签: gradle multi-project

在我的root build.gradle文件中,我为所有组件应用常见任务:

ext {
    componentTitle = 'application1'
 }

在子项目中我定义了componentTitle:

jar {
    manifest {
        attributes 'Implementation-Title': componentTitle
    }
}

component.gradle:

A problem occurred evaluating script.
> No such property: componentTitle for class: org.gradle.api.java.archives.internal.DefaultManifest

我收到错误:

extern "C"

1 个答案:

答案 0 :(得分:3)

看来,您已经将这种常见配置应用于子项目,但也应用于根项目,尽管它没有这样的属性。要仅将其应用于子项目,可以进行如下配置:

subprojects {
    apply from: rootProject.file('/component.gradle')
}

但是即使现在Gradle也没有找到componentTitle属性,如果你按照你的方式传递它(作为子项目脚本体的一部分)。您需要在所有子项目目录中创建一个gradle.properties文件,并像往常一样将此属性移动到此属性文件中:

componentTitle=application1

然后Gradle将能够在配置阶段找到它