我有一个gradle c / cpp项目,它有rootProject / project / subProject
在我的root build.gradle中,我有
ext.libFolder = rootDir.toString + '/lib/'
subprojects {
build.doLast {
copy {
from fileTree ( buildDir.getCanonicalPath() ).files
into rootProject.ext.libFolder
include '*.so'
include '*.a'
}
}
}
当我这样做时,这非常有效:gradle build但是如果我做gradle:project:subProject:build它不起作用......无论我如何调用构建任务,我还需要做些什么来改变它? / p>
另一方面,我们试图尽可能简化所有subProject build.gradle文件,尽可能简单,结构尽可能相同,因为我们有超过780个。
编辑:我已经添加了一个干净的任务,如下所示,这样gradle将知道文件已被清理。但是,这似乎不会影响核心问题,即除了gradle build之外的任何方式调用构建任务时都不会运行doLast任务。
clean {
delete rootProject.ext.includesFolder
delete rootProject.ext.libfolder
}
答案 0 :(得分:0)
将build.doLast{}
粘贴到afterEvaluate{}
块中。
subprojects {
afterEvaluate{
build.doLast {
copy{
from fileTree ( buildDir.getCanonicalPath() ).files
into rootProject.ext.libFolder
include '*.so'
include '*.a'
}
}
}
}
因为您希望在子项目构建任务可用后添加doLast功能。