2017-02-13 6 views
0

Как часть задачи удаления Gradle, я хотел бы удалить все tar-файлы, начиная с CSW и заканчивая .tar.gz из каталога. Как я могу добиться этого с помощью Groovy?Соответствие директорий Regex в Groovy

Я пытался что-то вроде ниже:

delete (file('delivery/').eachDirMatch(~/^CSW$.*.gz/)) 

Но это не работает. Как использовать регулярное выражение в Groovy. По сравнению с оболочкой это что-то вроде rm -rf CSW*.tar.gz

+0

Желаете ли вы сопоставить каталог? Это похоже на сопоставление файлов –

+0

Каталог, который я хочу сопоставить, находится внутри каталога 'delivery' –

ответ

2

Я отвечу решением градиента, поскольку вы ссылаетесь на град в своем вопросе. Что-то вдоль линий:

myTask(type: Delete) { 
    delete fileTree(dir: 'delivery' , include: '**/CSW*.tar.gz') 
} 

, где вызов delete метода время конфигурации и настраивает то, что будет удалены когда задача в конечном итоге работает. Для деталей, возможно, стоит посмотреть через gradle docs on the fileTree method.

Если вам нужно, чтобы остаться чистым Groovy вы могли бы сделать что-то вдоль линий:

new AntBuilder().fileScanner { 
    fileset(dir: 'delivery', includes: '**/CSW*.tar.gz') 
}.each { File f -> 
    f.delete() 
} 

Если этот код живет в Gradle сценарии я рекомендовал бы наклеивания вариант, так как он сохраняет Gradle последнюю -date и хорошо вписывается в граду configuration vs execution time pattern.

Если вы действительно хотите использовать регулярное выражение, в отличие от описанных выше шаблонов стиля, вы, безусловно, можете это сделать, хотя лично я не увижу большую часть точки, учитывая ваши требования.

 Смежные вопросы

  • Нет связанных вопросов^_^