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



在我的根build.gradle文件中,我为所有组件应用通用任务:

apply from: rootProject.file('common/component.gradle')

在子项目中,我定义了组件标题:

ext {
    componentTitle = 'application1'
 }

component.gradle:

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

我收到错误:

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

看起来,您不仅将这种通用配置应用于子项目,还将其应用于根项目,尽管它没有这样的属性。为了仅将其应用于子项目,可以这样进行配置:

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

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

componentTitle=application1

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

最新更新