gradle在子项目中使用变量在子项目中定义

时间:2014-02-05 16:36:55

标签: gradle

根项目build.gradle

    subprojects{
    task setUpEnvironmentDirs()<<{
        file("${distDir}").mkdirs()
//        FileTree tree = fileTree(dir:'../../../pngcommon/config-tokens', include:"*.properties")
        project.tree.each {File currentFile ->
            def fileName = "${currentFile.getName().split("\\.")[0]}"
            def destinationFile = "${distDir}/${fileName}/"
            file("${destinationFile}").mkdirs()
        }
    }
    }

子项目build.gradle

copyEnvironmentProperties{
    FileTree tree = fileTree(dir:'../../../pngcommon/config-tokens', include:"*.properties")
}
setUpEnvironmentDirs{
    FileTree tree = fileTree(dir:'../../../pngcommon/config-tokens', include:"*.properties")
}

根项目中注释掉的文件树是我尝试移动到子项目的变量,因为每个子项目中的目录路径都不同。我看到了一个类似的帖子并且同样地设置了我,但我一直收到错误。

gradle use variables in parent task that are defined in child

错误:

  • 出了什么问题: 评估根项目“服务”时出现问题。
      

    无法在项目':service'上找到属性'tree'。

1 个答案:

答案 0 :(得分:0)

您只需要在声明局部变量的代码中发表评论,并使用tree.each代替project.tree.each。相对路径将被正确解析。