我正在开发一个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
答案 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
块