Что такое gradle способ фильтрации подмножества файлов в src/main/webapp?

Я делаю преобразование maven в gradle и хочу видеть мнения о наилучшем способе выполнения следующего. В настоящее время у меня есть несколько файлов в src/main/webapp. Некоторые нуждаются в фильтрации в одну сторону, а некоторые нуждаются в фильтрации в другом.

Понятно, что в src/main/webapp у меня есть каталог foo, содержащий html и двоичные файлы, и под webapp много других файлов, включая html. Я хочу фильтровать только файлы foo/*. Html.

В моем условном build.gradle я могу либо сделать:

war {
  eachFile {
    if(shouldFilter(it)) {
      it.filter(ReplaceTokens, tokens: [key: 'value'])
    }
  }
}

def shouldFilter(input) {
  input.path.contains('foo') && input.name.endsWith('.html')
}

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

war {
  from('src/main/foo-pre-filter') {
    into 'foo'
    include '*.html'
    filter(ReplaceTokens, tokens: [key: 'value'])
  }
}

Или есть еще один вариант, который я пропустил?

Ответ 1

Если я правильно понял вопрос, вы можете использовать filesMatching. Кроме того, я бы сделал это как часть задачи processResources, в отличие от военной задачи. Он будет выглядеть примерно так:

processResources {
    filesMatching('foo/*.html') {
        filter(ReplaceTokens, tokens: [key: 'value'])
    }
}

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