有沒有一種簡單的方法將多個文本文件連接成Gradle中的單個文件?構建腳本應該看起來像這樣:如何連接Gradle中的多個文件?
FileCollection jsDeps = files(
'file1.js',
'file2.js'
// other files here
)
task concatenate << {
// concatenate the files to file.js
}
我正在使用Gradle 2.3。
有沒有一種簡單的方法將多個文本文件連接成Gradle中的單個文件?構建腳本應該看起來像這樣:如何連接Gradle中的多個文件?
FileCollection jsDeps = files(
'file1.js',
'file2.js'
// other files here
)
task concatenate << {
// concatenate the files to file.js
}
我正在使用Gradle 2.3。
(new File('test.js')).text = file('test1.js').getText() + file('test2.js').getText()
UPDATE:
對於集合。
(new File('test.js')).text = files('test1.js', 'test2.js').collect{it.getText()}.join("\n")
以下任務應該做的工作:
task concatenate << {
def toConcatenate = files('f1', 'f2', 'f3')
def output = new File('output')
toConcatenate.each { f -> output << f.text }
}
將附加到現有文件。可能要先刪除文件。 – user2543253
leftShift/「< <」 在gradle這個3.4不贊成你可以使用類似:
task concatenate {
doLast {
def toConcatenate = files("filename1", "filename2", ...)
def outputFileName = "output.txt"
def output = new File(outputFileName)
output.write('') // truncate output if needed
toConcatenate.each { f -> output << f.text }
}
您也可以註冊文件的輸入/輸出,以幫助增量構建。這對大文件特別有用。
是這樣的:
task 'concatenateFiles', {
inputs.files(fileTree("path/to/dir/with/files")).skipWhenEmpty()
outputs.file("$project.buildDir/tmp/concatinated.js")
doLast {
outputs.files.singleFile.withOutputStream { out ->
for (file in inputs.files) file.withInputStream { out << it << '\n' }
}
}
}
的文件樹的相反,它也可以與sourceset/sourceset輸出,特定的文件,從不同的任務輸出等取代
如果文件的收集不固定? – Opal
好的。你是對的。也許我錯過了這個問題。問題是如何循環文件或如何連接? – CyberAleks
OP沒有正確澄清它,但是您可以提供將連接文件集合的解決方案。 – Opal