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

グレンの答えはうまくいかなかったので、さらに簡単な解決策を思いつきました:

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

タスクを含む、フィルターをサポートするすべてのタスクで動作する必要がありTarます。

于 2020-01-06T12:42:27.723 に答える