#gradle #groovy
#gradle #groovy
Вопрос:
d:build
├── file1.txt
├── folder1
| └── anotherfile.txt
├── folder2
| └── subsubfolder
└── folderN
Когда я делаю
println fileTree("d:build").collect()
Я получаю
[d:buildfile1.txt, d:buildfolder1anotherfile.txt]
Мне нужны только файлы и папки в этом каталоге
[d:buildfile1.txt, d:buildfolder1, d:buildfolder2, d:buildfolderN]
Причина, по которой я хочу использовать fileTree
with .collect()
, заключается в том, что он ленив и не вызывает исключения нулевого указателя на этапе настройки.
Как мне это сделать?
Комментарии:
1. зачем вам нужен ваш каталог в тот момент, когда он еще не создан? Я думаю, вам лучше сделать свою задачу зависимой от других задач, чтобы убедиться, что каталог существует к этому моменту -> отсюда и «лень»
2. Попробуйте поместить код, вызывающий исключение нулевого указателя, в замыкание. Позже вызовите это закрытие, и в это время код будет оценен.
3. @injecteer Даже если я сделаю task2 зависимым от task1, все равно будет ошибка, если я попытаюсь поместить файлы в свойство task2, используя что-либо другое, кроме FileTree. В любом случае, я решил эту проблему с помощью FileTree.
4. @Catalin Если бы я изменил это на closure, мне пришлось бы изменить реализацию этого свойства для оценки закрытия. Не то, что я хотел.
5. вы можете перевести обход файлов в фазу исключения с помощью
doFirst{}
/doLast{}