子项目任务运行时未运行Gradle任务

时间:2016-02-03 15:29:02

标签: c++ gradle

我有一个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
}

1 个答案:

答案 0 :(得分:0)

build.doLast{}粘贴到afterEvaluate{}块中。

subprojects {
    afterEvaluate{
        build.doLast {
            copy{
                from fileTree ( buildDir.getCanonicalPath() ).files
                into rootProject.ext.libFolder
                include '*.so'
                include '*.a'
            }
        }
    }
}

因为您希望在子项目构建任务可用后添加doLast功能。