我有一個多項目,並且在構建最後一個子項目後,我想處理所有jar。 所以我創建了根項目任務:在根項目中找不到路徑'build'的任務
task install(dependsOn: 'build', type: Copy) {
doLast {
println "exec install task"
}
}
當打電話./gradlew install
在根目錄下,我面對這個錯誤:
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':install'.
> Task with path 'build' not found in root project 'foo'.
但是,調用./gradlew tasks
顯示我以下任務:
:tasks
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
...
我該如何實現所需的功能?
非常感謝你的解釋。我會盡快嘗試。將取決於子項目* .findByName('build')。minus(null)'只會導致一次調用'install'?如果我有子項目A,B和C,'install'應該在所有子項目的最後一個'build'完成後運行一次。 – user3105453
是的,每個任務只執行一次。如果依賴多個其他任務,則在所有這些任務完成後執行。如果你肯定會100%確定,那麼子項目C的'build'任務將是__always__是最後一個,你可以使用'dependsOn':projectC:build'',但是我建議依賴每個任務和讓Gradle自己找出依賴關係樹。對於三個項目,您還可以通過'dependsOn'手動定義依賴關係:projectA:build',':projectB:build',':projectC:build''。 –
我終於找到時間來嘗試你的解決方案。不幸的是,'findByName'似乎不起作用,但是這行代碼完成了我所期望的:'dependsOn subprojects * .getTasksByName(「build」,true)'。隨時更新您的解決方案,我很樂意接受它。非常感謝你。 – user3105453