Gradle:如何在多项目构建*享常见任务?
在我的根的build.gradle文件我申请的常见任务的所有组件: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')
}
但即使是现在,如果你通过它你的方式(如子项目脚本身体的一部分)摇篮将找不到componentTitle
财产。你需要做一个gradle.properties
文件中的所有子项目目录和移动这个属性这个属性文件,像往常一样:
componentTitle=application1
然后摇篮将能够在配置阶段来找到它
我不得不将虚假属性componentTitle = fakeValue添加到根项目中以避免>无此属性:根脚本中的componentTitle错误。 – isobretatel
这都是因为你已经将它应用到根脚本,尽管它不需要它。这就是在子项目中使用'apply from'的原因 – Stanislav
RemovedTitle = fakeValue,works! – isobretatel
尝试project.componentTitle或project.ext.componentTitle – AdamSkywalker
罐子{ 清单{ 属性“实施-标题”:project.ext.componentTitle }} 错误 :无法获取财产“componentTitle”上额外的属性扩展,因为它不存在 – isobretatel
罐子{ manifest { attributes'Implementation-Title':project.componentTitle } }错误:无法在根项目上找到属性'componentTitle' – isobretatel