2013-01-23 42 views
0

這甚至可能嗎?我有類似:如何讓Gradle中的JavaExec任務的類任務依賴於另一個任務?

task taskB(dependsOn: taskA) { 
    // Do stuff. 
} 

task taskA { 
    // Do stuff. 
} 

task runClass(dependsOn: 'classes', type: JavaExec) { 
    main = 'com.some.package.MainClass' 
    classpath = some.classpath 
} 

我想在JavaExec任務classes之前運行taskB。我該怎麼辦?將其更改爲dependsOn: ['taskB', 'classes']似乎沒有幫助 - 它仍然首先執行classes

編輯:

添加classes.dependsOn taskB似乎已經奏效。儘管這是最好的方法嗎?

回答

0

在Gradle中,foo.dependsOn(bar, baz)相當於foo.dependsOn(bar); foo.dependsOn(baz)。它確實而不是意味着在barbaz之間的任何順序,就像它在Ant中(它的軟依賴關係特徵)一樣。

您能否介紹一下taskB的功能,以及爲什麼您認爲它需要在classes之前運行?

編輯:根據您在下面的意見

,我會做一些事情,如:

sourceSets.main.resources.srcDir "build/taskB" // output dir of taskB 
processResources.dependsOn(taskB) 

當然,這可以在許多方面加以完善,但它得到的基本權利。

+0

'taskB'將一些文件複製到源代碼樹中。實際上,我在技術上需要它運行在'processResources'之前,它實際上是複製資源文件('taskB'複製文件到的任務)的任務。我猜'classes'依賴於'processResources' ...但是'processResources'依賴於'taskB'可能更安全。 附加上下文:它是一個DropWizard項目,資源包含UI文件。 'taskB'運行grunt來創建UI文件的分佈以複製到DropWizard最終將使用的資源。 – Depressio

相關問題