在工作中,我们在开发过程中使用了Windows和Linux工作站的混合体。对于部署,我们始终部署到Unix机器上。我想确保行尾始终以Unix格式存在。在Gradle中实现这一点的最简单方法是什么?我认为可以使用FilterReader,但我没有找到现成的。这是最好的选择吗?
将此条目的编辑更改为使用复制任务。最初版本使用了Tar任务,但我注意到在Linux上运行时它会剥离CRLF,但在Windows上会无法正常工作。由于它们都是Copyspecs,我本来期望Tar任务能够像Copy任务一样工作,但不幸的是情况并非如此(Gradle 1.0-milestone-3)。
看起来我已经自己解决了。所需的FilterReader是FixCrLfFilter。以下代码片段显示了如何使用它:
import org.apache.tools.ant.filters.*;
task archiveit(type: Copy) {
from "conf"
into "targetdir"
filter(FixCrLfFilter.class,
eol:FixCrLfFilter.CrLf.newInstance("lf"))
}
System.setProperty("line.seperator","\n");
task dos2unix(type: Copy) {
from $sourceFile
into $targetFile
filter { line -> line}
}
Glen的答案对我没用,所以我想出了更简单的解决方案:
task archiveit(type: Copy) {
from "conf"
into "targetdir"
filter { line -> line.replaceAll('\r\n', '\n') }
}
应该适用于支持过滤器的所有任务,包括Tar
任务。