gradle - 對指定子項目忽略執行某些任務

        在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)
            }
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章