2016-04-29 116 views
8

在我的根的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 
+0

尝试project.componentTitle或project.ext.componentTitle – AdamSkywalker

+0

罐子{ 清单{ 属性“实施-标题”:project.ext.componentTitle }} 错误 :无法获取财产“componentTitle”上额外的属性扩展,因为它不存在 – isobretatel

+0

罐子{ manifest { attributes'Implementation-Title':project.componentTitle } }错误:无法在根项目上找到属性'componentTitle' – isobretatel

回答

3

看来,你已经将这种通用配置不仅应用于子项目,还应用于根项目,尽管它没有这样的属性。将其应用到子项目只,配置可以进行如下所示:

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

但即使是现在,如果你通过它你的方式(如子项目脚本身体的一部分)摇篮将找不到componentTitle财产。你需要做一个gradle.properties文件中的所有子项目目录和移动这个属性这个属性文件,像往常一样:

componentTitle=application1 

然后摇篮将能够在配置阶段来找到它

+0

我不得不将虚假属性componentTitle = fakeValue添加到根项目中以避免>无此属性:根脚本中的componentTitle错误。 – isobretatel

+1

这都是因为你已经将它应用到根脚本,尽管它不需要它。这就是在子项目中使用'apply from'的原因 – Stanislav

+0

RemovedTitle = fakeValue,works! – isobretatel

相关问题