Gradle でいくつかのファイルをコピーしたいのですが、結果のファイルに空白行が含まれてはいけません。つまり、空白行はコピーされません。filter(...)
それは from antで、おそらくfrom antでできると思いますTokenFilter
。ただし、構文がどのように見えるかはわかりません。
ありがとう。
Gradle はフィルタリングに Ant を使用します。その強力な実装のためです。たとえば、LineContainsRegExp Ant フィルターを使用して、空または空白のみの行を除外できます。
適切な正規表現は[^ \n\t\r]+
次のように、Gradle から直接 Ant を使用できます。
task copyTheAntWay {
ant.copy(file:'input.txt', tofile:'output.txt', overwrite:true) {
filterchain {
filterreader(classname:'org.apache.tools.ant.filters.LineContainsRegExp') {
param(type:'regexp', value:'[^ \n\t\r]+')
}
}
}
}
または、Gradle CopySpec のfilter メソッドを使用します。
task copyGradlefied(type:Copy) {
def regexp = new org.apache.tools.ant.types.RegularExpression()
regexp.pattern = '[^ \n\t\r]+'
from(projectDir) {
include 'input.txt'
filter(org.apache.tools.ant.filters.LineContainsRegExp, regexps:[regexp])
}
into "outputDir"
}