0

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

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

MyTask.conventionMapping.propertyName = { MyPluginConvention.propertyName }

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

在此先感谢,马林

4

1 回答 1

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.myTask或引用现有任务project.tasks["myTask"]

PS:约定对象已在很大程度上被扩展对象所取代。

于 2013-02-14T10:58:48.753 回答