Gradle: 如何在多项目构建中共享共同任务?
Gradle: How to share common tasks in multiproject build?
在我的根 build.gradle 文件中,我为所有组件应用了常见任务:
apply from: rootProject.file('common/component.gradle')
在子项目中我定义了componentTitle:
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')
}
但即使现在 Gradle 也不会找到 componentTitle
属性 如果您按照您的方式传递它(作为子项目脚本主体的一部分)。您需要在所有子项目目录中创建一个 gradle.properties
文件,并将此 属性 移动到此属性文件中,像往常一样:
componentTitle=application1
那么Gradle在配置阶段就可以定位到
在我的根 build.gradle 文件中,我为所有组件应用了常见任务:
apply from: rootProject.file('common/component.gradle')
在子项目中我定义了componentTitle:
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')
}
但即使现在 Gradle 也不会找到 componentTitle
属性 如果您按照您的方式传递它(作为子项目脚本主体的一部分)。您需要在所有子项目目录中创建一个 gradle.properties
文件,并将此 属性 移动到此属性文件中,像往常一样:
componentTitle=application1
那么Gradle在配置阶段就可以定位到