4

我想在 Gradle 中复制一些文件,生成的文件不应包含任何空行,即不复制空行。我认为这可以用 from ant 完成,filter(...)也许可以用TokenFilterfrom ant 完成。但是,我不确定语法会是什么样子。

谢谢。

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 的过滤方法:

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 回答