2017-01-23 2 views
1

Я новичок в градиенте, и у меня есть сценарий градиента, который создаст почтовый индекс папки, содержащей только файлы мультимедиа. Как определить шаблон, который будет соответствовать нескольким типам файлов (файл с расширением A или B или C)?Ant-style pattern, соответствующий нескольким типам файлов

Например, предположим, что папка содержит следующие файлы:

1. bar.jpg 
2. src/bar.gif 
3. src/bar.js 
4. bbar.swf 

И я хочу, чтобы захватить все мультимедийные файлы, которые могут быть JPG, JPEG, GIF и SWF.

В настоящее время, вот как я это делаю прямо сейчас:

def mediaFilesExtension= ["**/*.gif", "**/*.jpg", "**/*.jpeg", "**/*.svg", "**/*.png", "**/*.bmp", "**/*.swf"] 

    task zipImages(type:Zip) { 
     arhiveName "images.zip" 
     destinationDir = file("build/output") 
     from "source" 
     include mediaFilesExtension 
    } 

мне не нравится, как я должен повторить **\*, и я уверен, что есть лучший образец АНТ-стиль сопоставления, что я могу используйте для моего include.

Я пробовал **/*.gif|jp?g|swf, но он не работает. Я пробовал искать, но не нашел примеров. Какие-либо предложения?

ответ

1
def extensions = ["gif", "jpg", "jpeg", "svg", "png", "bmp", "swf"] as Set 
include { FileTreeElement el -> 
    int dotIndex = el.file.name.lastIndexOf('.') 
    if (dotIndex < 0) return false 
    String extension = el.file.name.substring(dotIndex + 1).toLowerCase() 
    return extensions.contains(extension) 
} 
2

Изменение включаемых в этот

include { 
    return it.name.endsWith(".jpg") || it.name.endsWith(".gif") // so on 
} 
Смежные вопросы