我创建了自己的简单任务,所以我想在测试之前清理
task cleanTest (group: 'test setup', description: 'clean then test.'){
dependsOn 'clean'
dependsOn 'test'
tasks.findByName('test').mustRunAfter 'clean'
}
我的任务完成后,我想运行干净的任务
我试过
configure(subprojects) {
task clean << {
println "Do clean " + project.name
}
task test(dependsOn: clean)<<{
println 'test ' + project.name
}
task cleanTest(dependsOn: cleanTest)<<{
parent.cleanTest.execute()
}
}
我想要的只是在我的自定义任务结束时运行'清理任务
答案 0 :(得分:3)
这是不可能的。您无法在一次Gradle运行中多次运行任务。因此,如果要在任务之前和之后执行相同的操作,请定义在任务之前和之后运行的方法。使用Task.execute()
不可以干净利落。从来没有做过甚至尝试过这个。它是一种纯粹的内部方法,永远不会被任何构建直接调用。它容易产生奇怪和不可预测的结果。
你想要的可能是
的内容subprojects {
def cleanIt = {
println "Do clean " + project.name
}
clean.doLast {
cleanIt()
}
task test(dependsOn: clean) {
doLast {
println 'test ' + project.name
}
}
task cleanTest(dependsOn: cleanTest) {
doLast {
cleanIt()
}
}
}
答案 1 :(得分:1)
如果您想在测试前进行清洁,那么只需根据清洁情况进行测试。这确保在每次测试之前执行清理。这就是gradle做事的方式。
task clean() {}
task test(dependsOn: clean) {}
还有一个问题是如何在mytask之后运行clean。要在mytask之后运行clean任务,你可以根据两者使用thirdtask并指定clean和mytask之间的强制顺序
task clean() {}
task mytask() {}
task thirdtask(dependsOn: [clean, mytask]){}
clean.mustRunAfter mytask
如果问题是你是否可以在一个版本中多次运行干净任务,那么这是不可能的,并且可以从吸血鬼那里看到答案以共享代码。