2014-10-18 77 views
1

假设我已经在我的gradle构建脚本中为运行集成和验收测试创建了单独的任务。当我运行构建任务时,我想按照以下顺序运行测试任务:单元测试(测试任务),集成测试(intergationTest任务)和验收测试(acceptanceTest任务)。这是可能的和如何?如何按特定顺序制作Gradle运行任务?

回答

1

您正在寻找摇篮文档中描述的“后应该运行” - http://www.gradle.org/docs/current/userguide/more_about_tasks.html

+0

正如我所看到的,它只指定了一个任务在另一个之后运行。我想在构建任务之前运行三个任务。我可以通过这个命令确实做到这一点,但这意味着如果我运行测试任务,只有两个将运行,我不想这样做。 – 2014-10-18 15:32:57

+0

你试过了吗? taskY.shouldRunAfter taskX1,taskX2'工作。 http://www.gradle.org/docs/current/javadoc/org/gradle/api/Task.html#shouldRunAfter(java.lang.Object ...) – Radim 2014-10-18 18:03:43

+0

我知道这是可能的,但我希望这只有在调用构建时才会发生。 – 2014-10-18 18:35:48

1

这里是你如何能做到这一点,而无需创建人工的依赖关系:

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" 
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) 
} 

它帮我按小组排列任务。