Ваша задача Gradle уже делает почти все правильно. <fileset>
в Ant - это группа файлов. Используя dir=
, вы можете начать с одного каталога и включить или исключить подмножество всех файлов в этом каталоге. Это поведение уже реализовано Gradle _3 _ задача, потому что она реализует CopySpec
интерфейс. Итак, только для одного Ant <fileset>
вы можете использовать задачу Copy
и ее методы, как вы это делали в своем примере:
task copyDocs(type: Copy) {
from 'path/to/dir'
include 'com/corp/domain/**'
into 'client'
}
Если вам нужно использовать несколько <fileset>
элементов, вы можете добавить дочерний CopySpec
для каждого из них, например с помощью метода from
с последующим закрытием. Конфигурации в этом закрытии будут применяться только к файлам из этого каталога, как и настройка одного <fileset>
:
task copyDocs(type: Copy) {
from('dir1') {
include 'foo/bar'
}
from('dir2') {
exclude 'bar/foo'
}
into 'dir3'
}
${build.classes}
относится к свойству Ant. Поскольку Gradle основан на Groovy, вы можете определять свое свойство в различных местах и способами (например, дополнительные свойства), но имейте в виду, что 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
. Мы можем передать закрытие, которое вызывается для каждого скопированного файла и содержит _ 20_. Я не знаю, как Ant регистрирует скопированные файлы, но одним из способов может быть следующее:
task copyDocs(type: Copy) {
// ...
eachFile { details ->
println "Copying $details.sourcePath to $details.path ..."
}
}
person
Lukas Körfer
schedule
15.07.2017