gradle 过滤 src/main/webapp 中文件子集的方法是什么?

2024-05-09

我正在将 Maven 转换为 gradle,希望了解执行以下操作的最佳方式的意见。我目前在 src/main/webapp 下有多个文件。有些需要以一种方式过滤,有些需要以另一种方式过滤。

理论上,在 src/main/webapp 下,我有一个包含 html 和二进制文件的目录 foo,在 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'])
  }
}

或者我错过了另一个选择?


如果我正确理解问题,您可以使用 filesMatching。另外,我会将其作为 processResources 任务的一部分来执行,而不是 war 任务。它看起来像这样:

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

我意识到最初的问题是两年前提出的,所以这可能对提问者没有帮助,但也许它可以在未来帮助其他人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gradle 过滤 src/main/webapp 中文件子集的方法是什么? 的相关文章

随机推荐