あなたのGr adleタスクはすでにほぼすべてのことを正しく行っています。 Antの<fileset>
はファイルのグループです。 dir=
を使用すると、1つのディレクトリから開始し、このディレクトリ内のすべてのファイルのサブセットを含めるか除外することができます。この動作は、CopySpec
インターフェイスを実装しているため、Gradle Copy
タスクによって既に実装されています。あなたが複数の<fileset>
の要素を使用する必要がある場合
task copyDocs(type: Copy) {
from 'path/to/dir'
include 'com/corp/domain/**'
into 'client'
}
は、あなたがそれらのそれぞれの子CopySpec
を追加することができます:あなたはあなたの例で行ったようなので、一つだけのAntのためにあなたは、Copy
タスクとそのメソッドを使用することができます<fileset>
、例えばfrom
メソッドを使用し、続いてクロージャを使用します。このクロージャ内の構成は唯一1つだけ<fileset>
を設定するように、このディレクトリからのファイルに適用されます:
task copyDocs(type: Copy) {
from('dir1') {
include 'foo/bar'
}
from('dir2') {
exclude 'bar/foo'
}
into 'dir3'
}
${build.classes}
はAntのプロパティを参照します。 GradleはGroovyをベースにしているため、さまざまな場所や方法でプロパティを定義できます(例えばextra properties)。build
はほぼすべてのGradleビルドスクリプトに存在するタスクの名前なので、build.classes
を直接実行するbuild
タスクの範囲内のプロパティを探します。
task copyDocs(type: Copy) {
// if you defined the property before
from my.build.classes
include 'com/corp/domain/**'
into 'client'
}
verbose
属性は、すべてのファイルのコピー操作は、コンソールにログオンする必要があるかどうかを定義します。 Gradleは簡単なオプションでファイルのロギングをサポートしていないため、独自に実装する必要があります。幸いにも、GradleはeachFile
メソッドを提供しています。コピーされたファイルごとに呼び出され、FileCopyDetails
オブジェクトを保持するクロージャを渡すことができます。私はAntがコピーしたファイルをどのように記録するのか分かりませんが、次のような方法があります:
task copyDocs(type: Copy) {
// ...
eachFile { details ->
println "Copying $details.sourcePath to $details.path ..."
}
}