2014-10-18 69 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) 
} 

它幫我按小組排列任務。