Gradle - 我可以使用约定属性管理任务依赖吗?

时间:2013-02-13 15:33:06

标签: groovy gradle

我正在使用Gradle作为我项目的构建系统。 我想要的是如果给定属性设置为“true”,则任务A依赖于任务B.这是可行的,如果答案是肯定的,我该怎么做?

目前,我正在使用conventionMapping,但这似乎不起作用。我的代码如下所示:

MyTask.conventionMapping.propertyName = { MyPluginConvention.propertyName }

if (MyTask.propertyName.equals("true")) {
    MyTask.dependsOn ...
}

提前致谢, 马林

1 个答案:

答案 0 :(得分:1)

您不必使用任务/约定类,而是必须使用实例。此外,您还必须推迟决定是否添加任务依赖项。例如:

def myTask = project.tasks.create("myTask", MyTask)
def otherTask = ...
def myConvention = new MyConvention()    
...
myTask.conventionMapping.propertyName = { myConvention.propertyName }
// defer decision whether to depend on 'otherTask'
myTask.dependsOn { myTask.propertyName == "true" ? otherTask : [] }

如果范围内没有任务变量,您还可以通过project.myTaskproject.tasks["myTask"]引用现有任务。

PS:会议对象已在很大程度上被extension objects取代。