11

在工作中,我们在开发过程中混合使用 Windows 和 Linux 工作站。对于部署,我们总是部署到 Unix 机器上。我想确保行尾始终采用 Unix 格式。Gradle 中实现这一目标的最简单方法是什么?我在想也许可以使用 FilterReader,但我没能找到现成的。这会是最好的选择吗?

4

2 回答 2

14

编辑此条目以改用复制任务。它的初始版本使用的是 Tar 任务,但我注意到它在 Linux 中运行时剥离 CRLF,但在 Windows 上却无法正常工作。因为他们都是copyspecs AFAIK,我本来希望Tar 任务工作相同,但遗憾的是情况并非如此(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"))
}
于 2011-05-11T03:32:45.980 回答
1

Glen 的回答对我不起作用,所以我想出了更简单的解决方案:

task archiveit(type: Copy) {
  from "conf"
  into "targetdir"
  filter { line -> line.replaceAll('\r\n', '\n') }
}

应该与支持过滤器的所有任务一起工作,包括Tar任务。

于 2020-01-06T12:42:27.723 回答