2015-10-02 83 views
24

我想將多個gradle任務作爲一個運行。因此,而不是運行多個任務的Gradle自定義任務

./gradlew clean build publish 

我想有一個自定義任務

./gradlew cleanBuildPublish 

,爲了執行cleanbuildpublish

這怎麼可能?

這不起作用以下方式

task cleanBuildPublish { 
    dependsOn 'clean' 
    dependsOn 'build' 
    dependsOn 'publish' 
} 
+0

您使用的Java插件做任務基類? –

+0

@SantoshGokak是的我做的 – Niklas

+0

我有一個更新的答案。一定要看看。 –

回答

36

如果您需要在預定義的順序來執行某些任務,那麼你不僅需要設置dependsOn,還設置mustRunAfter屬性用於此任務,如下面的代碼:

task cleanBuildPublish { 
    dependsOn 'clean' 
    dependsOn 'build' 
    dependsOn 'publish' 
    tasks.findByName('build').mustRunAfter 'clean' 
    tasks.findByName('publish').mustRunAfter 'build' 
} 

dependsOn沒有定義任務執行的順序,它只是使一個任務依賴於另一個任務,而mustRunAfter

+0

它仍然可以單獨執行任務嗎? – Niklas

+0

爲什麼不。您只在執行任務時設置了所有這些依賴關係 – Stanislav

+5

我看到這個錯誤'無法在空對象上調用方法mustRunAfter()' – Niklas

1

儘量讓cleanBuildPublish依賴於其他任務

的build.gradle

task clean{ 
    println "lets clean" 
} 

task build { 
    println "lets build" 
} 

task publish { 
    println "lets publish" 
} 

task cleanBuildPublish{ 
    println 'lets do all' 
} 


cleanBuildPublish.dependsOn clean 
cleanBuildPublish.dependsOn build 
cleanBuildPublish.dependsOn publish 

輸出

$ gradle cleanBuildPublish 
lets clean 
lets build 
lets publish 
lets do all 
:build UP-TO-DATE 
:clean UP-TO-DATE 
:publish UP-TO-DATE 
:cleanBuildPublish UP-TO-DATE 

BUILD SUCCESSFUL 

Total time: 2.738 secs 

檢查https://docs.gradle.org/current/userguide/more_about_tasks.html#addDependencyUsingTask更多細節

+0

仍然沒有。輸出:http://pastebin.com/8knNfLEY Gradle任務http://pastebin.com/NaHhdRkA – Niklas

+0

請分享您的build.gradle文件 –

+0

項目:http://pastebin.com/4uN9Usvd日曆模塊:http:// pastebin .com/CPzYKNqx Publishing.gradle http://pastebin.com/XMMQUG4C – Niklas

0

如果發佈的任務是在一個名爲subProjectName子項目,

... 
tasks.findByPath(':subProjectName:publish').mustRunAfter 'build' 
... 
-2

嘗試的build.gradle加入defaultTasks。例如。 defaultTasks 'clean', 'build', 'publish'

23

您也可以使用名爲GradleBuild

怎麼在這裏您可以與GradleBuild

task cleanBuildPublish(type: GradleBuild) { 
    tasks = ['clean', 'build', 'publish'] 
} 
+1

這正是我所需要的,謝謝 –