2015-03-13 43 views
0

我在gradle(multi)項目中添加了一些插件和任務,需要很長時間才能執行,因此只能在默認情況下在構建服務器上完成。開發人員應該能夠致電如何在默認情況下排除某些任務?

gradlew build 

執行構建和測試應用程序的基本步驟。在構建服務器上,Jenkins在我們的例子中,我想添加一個額外的參數來啓用前面提到的額外任務。例如。

gradlew build -buildserver 

所以我的問題是,我如何排除某些任務作爲我的默認值,並使用參數或類似的東西包括它們?

我試圖這似乎並不可能,至少在FindBugs的插件:

allprojects { 
    apply plugin: 'java' 
    apply plugin: 'findbugs' 

    ... 

    findbugs { 
    enabled = project.hasProperty('buildserver') 
    ... 
} 
+0

for findbugs任務不是'findbugs',而是'findbugsMain'。嘗試:'findbugsMain.enabled = false' – Opal 2015-03-13 11:43:37

回答

3

由於Opal我指出了正確的方向,我做了以下內容: 運行構建找到任務名稱並設置其enabled標誌是這樣的:

findbugsMain.enabled = project.hasProperty('buildserver') 
findbugsTest.enabled = project.hasProperty('buildserver') 
test.jacoco.enabled = project.hasProperty('buildserver') 
pmdMain.enabled = project.hasProperty('buildserver') 
pmdTest.enabled = project.hasProperty('buildserver') 

我加入的標誌我詹金斯然後運行構建:

gradlew clean build -P buildserver 
+0

偉大的解決方案,謝謝! – 2017-02-09 16:14:47

+0

我在構建文件中將這些屬性設置爲false,然後在將其設置爲true的情況下添加特定任務;所以gradle build會跳過findbugs,但gradle slowBuild不會。同樣,我只有在我的緩慢構建integrationTests。 – 2017-06-09 15:13:21

1

所有你需要做的是增加一個斷言對於相關任務

findbugs.onlyIf { project.hasProperty('buildserver') } 

你可以在gradle文檔[跳過任務] [1]部分閱讀更多關於它的內容。

+0

它不會工作。沒有這樣的任務:'findbugs'。 – Opal 2015-03-13 16:23:50

+3

我只是遵循Tim提供的示例,但我的解決方案通常適用於任何任務。 – 2015-03-13 17:04:10

+0

是的,它會的,但答案是無效的。 – Opal 2015-03-13 17:11:02