2017-08-13 43 views
1

因此,我正在嘗試將所有gradle任務列表寫入文件。我當然可以使用tasks這個命令,但是我希望每次調用任何其他 gradle命令時將它緩存到文件中。因此,無論何時我運行./gradlew build例如,我都希望將可用任務寫入文件。從構建腳本獲取所有Gradle任務的列表

這似乎很簡單,我寫了下面的任務,嘗試一下:

task cacheTasks() { 
    doLast { 
     allprojects { p -> 
      p.tasks*.each { t -> 
       println(p.name + ":" + t.name) 
      } 
     } 
    } 
} 

的問題是,我只能得到一個子集的所有可用的任務。當我運行./gradlew tasks --all命令時,會打印更多內容。似乎沒有一個內置的任務(如buildcleanhelp)是在tasks*列表,當我在它循環,但奇怪的是我可以直接引用他們:

tasks.build { t -> 
    println("DEBUG:" + t.name) 
} 

如此看來簡單,但我一直在尋找解決方案。我甚至嘗試在gradle源代碼中查看tasks任務是如何工作的,但我無法找到任何線索,爲什麼這不起作用。

回答

1

我非常懷疑在名爲build的容器中有一個任務類。

這是我所得到的,當我調試任務:

tasks


我不是說gradle build不運行,但它可以是其他形式的可能的org.gradle.api.tasks.GradleBuild實例。 (我不是很確定,因爲gradle源代碼對我來說很難編譯和運行)。

當使用

tasks.build { t -> 
    println("DEBUG:" + t.name) 
} 

你居然叫org.gradle.api.tasks.TaskContainer#create(java.util.Map<java.lang.String,?>, groovy.lang.Closure),並創建一個名爲build新任務。

+0

'tasks.build'創建一個新任務的好處。我忘了會發生。但是,這並沒有回答我如何獲得所有任務列表的問題...... – meonlol

相關問題