職場では、開発中に Windows と Linux のワークステーションを混在させて使用しています。展開では、常に Unix マシンに展開します。行末が常に Unix 形式であることを確認したいと思います。Gradleでこれを達成する最も簡単な方法は何ですか? FilterReader を使用できるのではないかと考えていましたが、既製のものを見つけることができませんでした。これが最良の選択肢でしょうか?
5484 次
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 に答える