人生のエラー集 -4ページ目

人生のエラー集

バグ出し率トップを誇るへっぽこプログラマーが発生させたエラーをメモのために残します。
同じエラーで悩む人の解決策になりますように…

趣味のことも書いたりしますが。

gradle・・・とても難しいですね。deleteすら満足できないです。
調べてもピンとくるものがありませんでした。
試行錯誤の結果、とりあえず、目的としていたことができたので紹介します。

目的:特定の名前を持ったファイルを削除する
sample/XXXの下にあるファイルをすべて削除します。
ただ、すべてではなく名前を指定して削除したい場合のサンプルです。

■パターン1
タスクの中で削除を行います。
ただのタスクなので、このほかにも好きなだけ書けます。実行されます。
task deleteFiles() << {
  println 'deleteFiles Start'
  project.delete file('sample/del1').listFiles().findAll{it.name.startsWith('test')}
  println 'deleteFiles End'
}

■パターン2
削除用のタスクです。呼び出し時には指定したファイルの削除が行われます。
タスク呼び出し時(gradle deleteFilesWithType実行時)はファイルの削除のみが行われます。
説明が難しいですけど、タスクの中身はタスク実行前に処理されます。
もっと言うと、他のタスクが呼び出されたタイミングでもprintlnやsetDeleteが呼び出されます。
ただ、実際に削除が行われるのは呼び出されたときです。
setDeleteは削除ではなく、対象をセットするだけなので注意してください。
task deleteFilesWithType (type : Delete) {
  println 'deleteFilesWithType Start'
  setDelete file('sample/del2').listFiles().findAll{it.name.startsWith('test')}
  println 'deleteFilesWithType End'
}

以上でした。
パターン2の説明がうまくできないのは、gradleをしっかり理解していないからですかね。
使いこなせるようになりたいです。

ファイルの削除方法に悩んだあの日に、さようなら。