Gradle任务写入文件的问题

时间:2014-08-19 00:48:01

标签: gradle android-studio android-gradle

我正在开发一个Android应用程序,其中有一个JSON文件目录,我想创建一个gradle任务,将所有这些文件合并到一个JSON文件中。

这是我到目前为止的gradle任务,但没有创建文件:

// Task that combines all JSON files in ../libraries into src/main/res/raw/libraries.json
task combineJSonFiles {
    String content = ""
    FileTree tree = fileTree(dir: '../libraries', include: '**/*.json')
    tree.each {File file ->
        content += file.getText()
    }

    println "[" + content.substring(0, content.length()-1) + "]" // prints out the correct contents
    File libraries = file("../app/src/main/res/raw/libraries.json")
    println libraries.getProperties()
}

我打印出属性,我不确定为什么这些是属性值:

{directory=false, canonicalFile=/Users/michaelcarrano/AndroidStudioProjects/detective_droid/app/src/main/res/raw/libraries.json, file=false, freeSpace=0, canonicalPath=/Users/michaelcarrano/AndroidStudioProjects/detective_droid/app/src/main/res/raw/libraries.json, usableSpace=0, hidden=false, totalSpace=0, path=/Users/michaelcarrano/AndroidStudioProjects/detective_droid/app/src/main/res/raw/libraries.json, name=libraries.json, prefixLength=1, absolute=true, class=class java.io.File, parentFile=/Users/michaelcarrano/AndroidStudioProjects/detective_droid/app/src/main/res/raw, absolutePath=/Users/michaelcarrano/AndroidStudioProjects/detective_droid/app/src/main/res/raw/libraries.json, absoluteFile=/Users/michaelcarrano/AndroidStudioProjects/detective_droid/app/src/main/res/raw/libraries.json, parent=/Users/michaelcarrano/AndroidStudioProjects/detective_droid/app/src/main/res/raw}

任何帮助都表示赞赏,因为即使在阅读文档后我似乎也没有想到这一点。 http://www.gradle.org/docs/current/userguide/working_with_files.html

2 个答案:

答案 0 :(得分:2)

我只是发布现在有效的任务的代码:

task combineJSonFiles {
    String content = ""
    FileTree tree = fileTree(dir: '../libraries', include: '**/*.json')
    tree.each {File file ->
        content += file.getText()
    }
    def libraries = new File("app/src/main/res/raw/libraries.json")
    libraries.text = "[" + content.substring(0, content.length()-1) + "]"
}

我的问题是尝试使用Java.io.File并为我的文件设置了错误的目录路径。

答案 1 :(得分:1)

在Groovy / Java中创建java.io.File实例不会在磁盘上创建该文件。你需要写一些东西。查看此tutorial以了解Groovy中的文件。

此外,您已将任务实施放在任务配置块中,而不是任务操作。这意味着您的代码将在您预期时不会运行 - 它将在您每次运行gradle时运行,而不是在您运行此任务时运行。您需要将代码放在doLast