在gradle中,可以自定義一些任務,並且可以把任務指定到所有的子工程或者具體某個工程。但是,如果在所有子工程中都定義了某個任務,我們又要在某個工程中忽略該任務,怎麼辦?本文將會介紹兩種解決方法。
演示項目中的父子工程的目錄結構
gradle-project
----build.gradle
----springboot
--------build.gradle
----springboot1
--------build.gradle
父工程中的build.gradle中部分關鍵代碼如下,我們給所有的子工程(這裏指springboot/springboot1)定義了一個display任務,當運行父工程的display任務的時候,兩個子工程springboot/springboot1都會調用display任務,顯示各自的工程名
subprojects {
task display() {
doLast {
println project.name
}
}
}
現在,我們想只在springboot1子工程調用display任務。
方法1:
在springboot1子工程的build.gradle中加入
display.enabled=false
缺點是,如果有多個子工程,需要每個build.gradle都加入該代碼
方法2:
在父工程中的build.gradle的subprojects節點中加入,意思是當工程名字不爲springboot1才執行該display任務
tasks.findAll { task ->
if (task.name == display.name) {
task.onlyIf {
return ('springboot1' != project.name)
}
}
}