我正在尝试基于子项目中的一个属性配置Zip任务,但是在配置任务时该属性尚不可访问。例如,我想从我的zip文件中排除所有具有 toexclude = true
的项目。因此,我要排除的子项目的build.gradle
如下:
ext.toexclude = true;
...
我的主要build.gradle
文件有以下任务:
task zipContent (type: Zip){
def excludedProjects = allprojects.findAll{Project p -> p.toexclude == true}.collect{it.name}
println excludedProjects
destinationDir = "/some/path"
baseName = "myFile.zip"
exclude excludedProjects
from "/some/other/path"
}
问题在于
excludedProjects
始终为空。实际上,当我执行任务时,我可以看到[]
。我认为这是由于在配置任务时没有设置子项目build.gradle
中设置的属性。作为证据,如果我将任务的第一行替换为以下内容:def excludedProjects = allprojects.collect{it.name}
这个任务会打印出我项目的所有名称,而且压缩包里什么也没有(这意味着问题在于 p.toexclude == true
)。
另外,如果我尝试这样做:
task zipContent (type: Zip){
def excludedProjects = []
doFirst{
excludedProjects = allprojects.findAll{Project p -> p.toexclude == true}.collect{it.name}
println "IN DOFIRST"
println excludedProjects
}
println "IN TASK CONFIG"
println excludedProjects
destinationDir = "/some/path"
baseName = "myFile.zip"
exclude excludedProjects
from "/some/other/path"
}
该任务会打印出
IN TASK CONFIG
后跟一个空数组,然后打印出IN DOFIRST
,其中包含只有我设置了ext.toexclude == true
的子项目。那么,在配置时间是否有一种方法可以获取子项目的属性?
projectsEvaluated
方法中,有没有一种方法可以使用排除项目列表调用zip任务?理想情况下,当调用另一个任务时,我会调用zip任务。 - Cydrick Trudeltasks.getByPath(String)
搜索任务。 - Lukas Körfer