如何将gradle文件集合传递给exec?
如何将FileCollection的元素传递给Exec 我有一个任务,它从另一个任务获取输入,并调用一个Perl脚本来生成三个输出文件如何将gradle文件集合传递给exec?,gradle,Gradle,如何将FileCollection的元素传递给Exec 我有一个任务,它从另一个任务获取输入,并调用一个Perl脚本来生成三个输出文件 task acct(type: Exec) { inputs.files getAcct outputs.files "file1", "file2", "file3" executable "perl" args "makeAcct.pl", inputs.files.singleFile, "file1", "file2",
task acct(type: Exec) {
inputs.files getAcct
outputs.files "file1", "file2", "file3"
executable "perl"
args "makeAcct.pl", inputs.files.singleFile, "file1", "file2", "file3"
}
这是可行的,但我不想重复outputs.files
和args
中的文件名
我已尝试将这些参数传入args
但它获取一个对象[],并传递输出.files.getFiles().toArray()
[Ljava.lang.Object;@340bccc9
获取一个文件[],并传递outputs.files.asType(Object[])
[Ljava.io.File;@6280a9b8
获取一个集合并传递outputs.files.getFiles()
[file1、file2、file3]
获取单个字符串并传递outputs.files.getAsPath()
file1:file2:file3
getsoutputs.files.getAsPath().replaceAll(File.pathSeparator,”)
但它仍然作为一个参数传递,而不是作为三个参数传递file1 file2 file3
抛出,因为有多个文件(它适用于输入,因为只有一个输入文件)outputs.files.singleFile
可以工作,但比仅仅输入文件名更难看outputs.files.getFiles().toArray()[0],outputs.files.getFiles().toArray()[1],outputs.files.getFiles().toArray()[2]
is-aFileCollection
java.util.Collection
- 有一个
重载,它接受一个Exec#args
(请参阅中的Iterable
)Exec
- 按照惯例,接受多个参数的配置方法是加法的
task acct(type: Exec) {
inputs.files getAcct
outputs.files "file1", "file2", "file3"
executable "perl"
args "makeAcct.pl"
args inputs.files
args outputs.files
}
或者,分散集合(
args“makeAcct.pl”、*(inputs.files)、*(outputs.files)
)也应该可以工作。使用多个args也可以。*outputs.files
会出现语法错误,而outputs*.files
会将“[task':acct'output files]”传递给Perl脚本。可能需要是*(outputs.files)
输出*.files
是作业的错误工具。