使用Gradle复制文件时如何跳过空行?

时间:2013-02-19 08:27:55

标签: filter copy gradle

我想在Gradle中复制一些文件,结果文件不应包含任何空白行,即不复制空白行。我假设可以使用filter(...)完成,也可以使用ant中的TokenFilter。但是,我不确定如何使用语法。

感谢。

1 个答案:

答案 0 :(得分:5)

Gradle使用Ant for filtering,因为它具有强大的实施功能。例如,您可以使用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's过滤器方法:

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"
}