我已经创建了自己的简单任务,所以我想在测试之前清洁
task cleanTest (group: 'test setup', description: 'clean then test.'){
dependsOn 'clean'
dependsOn 'test'
tasks.findByName('test').mustRunAfter 'clean'
}
完成任务后,我想运行干净的任务
iv'e尝试
configure(subprojects) {
task clean << {
println "Do clean " + project.name
}
task test(dependsOn: clean)<<{
println 'test ' + project.name
}
task cleanTest(dependsOn: cleanTest)<<{
parent.cleanTest.execute()
}
}
我想要的就是在自定义任务结束时运行'干净的任务
这是不可能的。您不能在一次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()
}
}
}
如果要在测试前清洁,则只需进行测试取决于干净即可。这确保在每次测试之前,都要执行清洁。这就是Gradle做事的方式。
task clean() {}
task test(dependsOn: clean) {}
也有疑问如何在mytask之后干净。要在mytask之后运行干净的任务,您可以根据两者使用第三任务,并指定清洁和mytask之间的强制订单
task clean() {}
task mytask() {}
task thirdtask(dependsOn: [clean, mytask]){}
clean.mustRunAfter mytask
如果问题是您是否可以在单个构建中多次运行干净的任务,那么这是不可能的,请参见吸血鬼的答案以共享代码。