2013-02-19 62 views
3

我想在Gradle中复制一些文件,并且生成的文件不应该包含任何空白行,即空行不会被复制。我认为可以用filter(...)来完成,也可以用蚂蚁的TokenFilter来完成。但是,我不知道如何将语法看起来像。如何用Gradle复制文件时跳过空行?

谢谢。

回答

4

Gradle使用Ant for filtering,因为它的强大的实现。例如,您可以使用LineContainsRegExp Ant过滤器来过滤掉只有空白或空白的任何行。

适当的正则表达式可以是[^ \ n \吨\ R] +

可以使用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" 
} 
+0

你是怎么知道把regexps当成数组的呢?我最好的阅读文档得出的结论是param只是简单的正则表达式:'my-regex'。 – 2014-11-10 21:51:47