War 在src/main/webapp中过滤文件子集的渐变方式是什么?
我正在向gradle做一个maven转换,希望看到关于执行以下操作的最佳方式的意见。我目前在src/main/webapp下有多个文件。有些需要以一种方式过滤,有些需要以另一种方式过滤 名义上,在src/main/webapp下,我有一个包含html和二进制文件的目录foo,在webapp下有许多其他文件,包括html。我只想过滤foo/*.html文件 在我的概念build.gradle中,我可以:War 在src/main/webapp中过滤文件子集的渐变方式是什么?,war,gradle,War,Gradle,我正在向gradle做一个maven转换,希望看到关于执行以下操作的最佳方式的意见。我目前在src/main/webapp下有多个文件。有些需要以一种方式过滤,有些需要以另一种方式过滤 名义上,在src/main/webapp下,我有一个包含html和二进制文件的目录foo,在webapp下有许多其他文件,包括html。我只想过滤foo/*.html文件 在我的概念build.gradle中,我可以: war { eachFile { if(shouldFilter(it)) {
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'])
}
}
或者我还遗漏了其他选项吗?如果我正确理解了问题,您可以使用文件匹配。另外,我将把它作为processResources任务的一部分,而不是war任务。它看起来像这样:
processResources {
filesMatching('foo/*.html') {
filter(ReplaceTokens, tokens: [key: 'value'])
}
}
我意识到最初的问题是2年前提出的,所以这可能对提问者没有帮助,但也许将来会对其他人有所帮助。我今天遇到了同样的问题,无法从谷歌搜索的任何结果中立即找到具体的工作示例,其中一个结果让我来到这里。经过几次尝试,我终于成功了。以下是一项工作任务:
war {
filesMatching("**/foo/*.html") {
filter(ReplaceTokens, tokens: [key: 'value'])
}
}
链接:您需要使用哪些不同类型的过滤器?我将使用第一个块,删除if并让gradle在所有文件上运行过滤器。您的第一个选项对我来说非常有用。请注意,您必须导入
ReplaceTokens
,例如,import org.apache.tools.ant.filters.ReplaceTokens
此答案适用于src/main/resources
中的文件,但不适用于问题标题中明确要求的src/main/webapp
中的文件。