让我们说我在gradle构建脚本中创建了运行集成和验收测试的单独任务。当我运行构建任务时,我想按此顺序运行测试任务:单元测试(测试任务),集成测试(intergationTest任务)和验收测试(acceptanceTest任务)。这可能吗?如何?
答案 0 :(得分:2)
您正在寻找Gradle文档中描述的“应该运行” - http://www.gradle.org/docs/current/userguide/more_about_tasks.html
答案 1 :(得分:2)
以下是如何在不创建人为依赖的情况下实现的:
https://caffeineinduced.wordpress.com/2015/01/25/run-a-list-of-gradle-tasks-in-specific-order/
TLDR;版本:
//--- build aliases : define a synonym here if you want a shortcut to run multiple targets
def buildAliases = [
'all' : ['clean', 'assemble', 'runProvisioner', 'stopTomcat', 'installTomcat', 'deployToTomcat', 'startTomcat'],
'rebuild' : ['clean', 'assemble']
]
def expandedTaskList = []
gradle.startParameter.taskNames.each {
expandedTaskList << (buildAliases[it] ? buildAliases[it] : it)
}
gradle.startParameter.taskNames = expandedTaskList.flatten()
println "\n\n\texpanded task list: ${gradle.startParameter.taskNames }\n\n"
答案 2 :(得分:0)
这就是我在项目中所做的。
check.dependsOn integTest
integTest.mustRunAfter test
tasks.withType(Pmd) {
mustRunAfter integTest // Pointing to a task
}
tasks.withType(FindBugs) {
mustRunAfter tasks.withType(Pmd) // Pointing to a group of tasks under Pmd
}
tasks.withType(Checkstyle) {
mustRunAfter tasks.withType(FindBugs)
}
它帮助我按小组订购任务。
答案 3 :(得分:0)
我根据在Gradle论坛上找到的解决方案创建了此辅助方法。
Task.metaClass.runFirst = { Task... others ->
delegate.dependsOn(others)
delegate.mustRunAfter(others[0])
for (def i=0; i < others.size() - 1; i++) {
def before = others[i]
def after = others[i+1]
after.mustRunAfter(before)
}
}
然后您可以创建任务X,A,B和C并按以下方式使用:
X.runFirst A, B, C
答案 4 :(得分:0)
列表中的第一个答案对我来说非常好。我用过
X.shouldRunAfter Y