[英]Add task dependency to existing Gradle task
我会失去理智的。 我有一个build.gradle
文件,看起来像:
apply plugin: 'idea'
task blah{
// do something
}
idea{
// some stuff
dependsOn blah
}
我得到了这个:
Could not find method dependsOn() for arguments [task ':blah'] on root project ...
我无法弄清楚正确的语法是什么。 有什么帮助吗?
这应该有效:
apply plugin: 'idea'
task blah{
// do something
}
tasks.idea.dependsOn(blah)
也许我的工作示例会很有用 - build.gradle 的片段:(gradle 版本的 1.6)
ear {
doFirst {
tasks.buildWar.execute();
}
...
}
task deployProj <<{
tasks.ear.execute()
tasks.copyEar.execute()
tasks.copyJar.execute()
}
task buildWar(type: GradleBuild) {
buildFile = 'mysubproject/build.gradle'
tasks = ['war']
}
task copyEar(type: Copy) {
from earPath
into "$System.env.JBOSS_HOME" + deploymentPath
}
task copyJar(type: Copy) {
from jarPath
into libPath
}
copyEar.mustRunAfter 'ear'
copyJar.mustRunAfter 'ear'
我有一个非常相似的错误:
Could not find method runEC2Step1DownloadSource() for arguments [{dependsOn=task ':docker:buildCopyEC2BuildFiles'}, task ':docker:runEC2SetupVariables', build_cwq7epb31twoanyxdhq1zosc7$_run_closure16@2a0fe301] on project ':docker' of type org.gradle.api.Project.
我的问题是我的任务runEC2Step1DownloadSource
是这样定义的:
task runEC2Step0CreateMachine(dependsOn: buildCopyEC2BuildFiles, runEC2SetupVariables) {
doLast {
// A bunch of stuff
}
}
解决方案是在dependsOn任务列表中添加一个ARRAY:
task runEC2Step0CreateMachine(dependsOn: [buildCopyEC2BuildFiles, runEC2SetupVariables]) {
doLast {
// A bunch of stuff
}
}
请注意dependsOn 任务列表周围的额外[] 括号。
我想你只是想在任务完成后添加行为,只需获取所有任务名称并添加钩子,它就会起作用。
像这样:
tasks.whenTaskAdded {
theTask ->
if (theTask.name.contains('externalNativeBuild')) {
theTask.doLast{
println "[*] begin to copy file!"
}
}
// println theTask.name
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.