繁体   English   中英

任务声明不起作用

[英]task declaration not working in gradle

我有下面的代码失败的gradle文件。

task wakeup
task dressup
task playMusic
task goRunning

//dependsOn(task)

wakeup <<{  
    println("I am awake,i need to go for a run")
}

dressup(dependsOn: wakeup)<<{
    println("I am ready with my track suit")
}

playMusic(dependsOn: dressup)<<{
    println("I have played track 7")
}

goRunning(dependsOn: playMusic)<<{
    println("I am running")
}

错误:-

C:\Users\akathaku\Desktop\gradlelearning>gradle -q -b taskmethods.gradle goRunning

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\akathaku\Desktop\gradlelearning\taskmethods.gradle' line: 14

* What went wrong:
A problem occurred evaluating root project 'gradlelearning'.
> Could not find method dressup() for arguments [{dependsOn=task ':wakeup'}] on root project 'gradlelearning'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

但是如果我将代码更改为:-

//dependsOn(task)

task wakeup <<{ 
    println("I am awake,i need to go for a run")
}

task dressup(dependsOn: wakeup)<<{
    println("I am ready with my track suit")
}

task playMusic(dependsOn: dressup)<<{
    println("I have played track 7")
}

task goRunning(dependsOn: playMusic)<<{
    println("I am running")
}

它运行完美。 通常情况下,声明任务并稍后使用它是有效的。但是使用dependsOn方法会失败。

您的问题不是dependsOn method ,显然在第二个示例中它可以工作。

问题在于,尝试定义任务主体时您缺少task声明,因此gradle将常规代码解释为方法调用。 含义,当您写:

dressup(dependsOn: wakeup)<<{
    println("I am ready with my track suit")
}

Gradle不能将其识别为任务,而是在尝试使用参数{dependsOn: wakeup}调用名为dressup的方法时看到了dressup(dependsOn: wakeup)部分。 但是不存在这样的方法,并且会出现错误。

这就是为什么您总是需要告诉gradle这是一项任务的原因,即:

task dressup(dependsOn: wakeup)<<{
    println("I am ready with my track suit")
}

按照您的第二个(也是成功的)示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM