4

Gradle でいくつかのファイルをコピーしたいのですが、結果のファイルに空白行が含まれてはいけません。つまり、空白行はコピーされません。filter(...)それは from antで、おそらくfrom antでできると思いますTokenFilter。ただし、構文がどのように見えるかはわかりません。

ありがとう。

4

1 に答える 1

5

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"
}
于 2013-02-19T09:31:42.617 に答える