documentation表示如果我从封闭处返回null
,则应该删除该行,但是当我这样做时
filter { String line ->
line.startsWith('-') ? null : line
}
我明白了
Caused by: java.lang.NullPointerException
at org.gradle.api.internal.file.copy.LineFilter.getTransformedLine(LineFilter.java:67)
at org.gradle.api.internal.file.copy.LineFilter.ensureData(LineFilter.java:76)
at org.gradle.api.internal.file.copy.LineFilter.read(LineFilter.java:83)
at org.gradle.api.internal.file.copy.LineFilter.read(LineFilter.java:93)
at org.apache.tools.ant.util.ReaderInputStream.read(ReaderInputStream.java:117)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025)
at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:58)
at org.gradle.api.internal.file.copy.DefaultFileCopyDetails.copyTo(DefaultFileCopyDetails.java:94)
at org.gradle.api.internal.file.AbstractFileTreeElement.copyFile(AbstractFileTreeElement.java:93)
at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:74)
... 90 more
请注意,如果我输入一个空字符串而不是null,则会留下一个空行。所以1)为什么它没有记录的工作? 2)如果我做错了怎么能让这个过滤器工作?
以防万一(使用包装器):
------------------------------------------------------------
Gradle 2.4
------------------------------------------------------------
Build time: 2015-05-05 08:09:24 UTC
Build number: none
Revision: 5c9c3bc20ca1c281ac7972643f1e2d190f2c943c
Groovy: 2.3.10
Ant: Apache Ant(TM) version 1.9.4 compiled on April 29 2014
JVM: 1.7.0_79 (Oracle Corporation 24.79-b02)
OS: Mac OS X 10.10.5 x86_64
答案 0 :(得分:0)
看一下你的版本的documentation,我的意思是,不是现在的版本,这是目前最新版本和2.7版本。它只包含:
根据提供的闭包添加内容过滤器。将使用每一行(剥去行结尾)调用Closure,并返回一个String来替换该行。
没有关于null的消息。所以,似乎这种行为是在最新版本中添加的。由于javadocs,它从2.6版本开始引入。
如果您需要它,您必须使用更新的版本或使用基于Ant的自定义任务,就像在此SO answer中提到的那样,您需要正则表达式。