簡體   English   中英

識別已在gradle中調用的項目列表

[英]Identifying the list of projects that have been invoked in gradle

我有一個支持多項目的設置插件。 當前,它將自身應用於settings.gradle標識的每個項目。 但是,這是一個問題,因為每個子項目的配置都不相同,並且我通過-P在命令行上設置的項目屬性來控制某些插件行為。

問題是,在沒有使用該屬性所需的配置的項目上,該操作將失敗,並且我知道通過命令行將屬性應用於特定子項目的已知方法。

而不是遍歷settings.gradle.allprojects ,有沒有辦法知道哪些項目實際上已包含在構建中? 例如,當我這樣做時:

gradle :subproject-name:build :other-subproject-name:build -PsomeProperty

我想知道僅調用了subproject-nameother-subproject-name ,以便我可以將設置插件僅應用於那些項目。

還是有一種方法可以某種方式將“項目”屬性“范圍”到僅特定項目?

...有沒有辦法知道哪些項目實際上已包含在構建中?

這是一個誤解。 settings.gradle包含所有項目時,所有項目都是構建的一部分,並且都將對其​​進行配置,以便它們具有關聯的Project

您最終要尋找的是,給定將要執行的任務,擁有這些任務的子項目是什么? 為此,您可以獲取Gradle的任務圖,對於將要執行的所有任務,找到擁有每個任務的項目。

gradle.taskGraph.whenReady { graph ->
    def projects = graph.allTasks.collect { it.project }.toSet()
    projects.each {
        println "Project is being used in this build: " + it
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM