我正在尝试将ANT构建中的任务转换为Gradle:
${assets}
我想我还没有完全掌握基本的Gradle概念,但这是我尝试过的:
task indexAssets << {
def assets = file("assets")
def contexts = files(assets)
inputs.file(assets)
outputs.file("assets/assets-gradle.index")
def tree = fileTree(dir: 'assets', include: ['**/*'], exclude: ['**/.svn/**', 'asset.index'])
contexts.collect { relativePath(it) }.sort().each { println it }
tree.collect { relativePath(it) }.sort().each { println it }
}
>树很好,但只包含文件(叶子)路径
>我似乎无法获得简单干净的目录列表(上下文).我尝试了其他几个变种(树,包含/排除),但我要么在该目录中获得单个文件,要么在目录名称本身或者没有.我只想要一个简单的’assets’目录中的目录列表.
>现在我只是试图打印路径,但我也想知道以后将这些写入文件的正确方法(如ANT的echo文件).
更新:
这个groovy片段似乎做了那个部分(svn过滤器),但我宁愿找到一个更“Gradley”的方式来完成这个任务.它稍后作为预构建依赖项在构建变体的上下文中运行. (注意:我必须指定’Project’作为此hack中路径的一部分,因为我猜我不在该项目的上下文中执行该任务?)
def list = []
def dir = new File("Project/assets")
dir.eachDirMatch (~/^(?!\.svn).*/) { file ->
list << file
}
list.each {
println it.name
}