Gradle:战争任务有冲突包含/排除

Dav*_* L. 7 java groovy build-process build gradle

我正在尝试使用Gradle构建一个war文件,但我遇到的问题是排除一个目录并包含另一个恰好具有相同名称但不同父目录的目录.

请注意下面的第一个代码示例中,css/最终war文件中都没有包含任何目录 - 我假设因为Gradle认为我想要排除任何名称css/而不管其绝对路径.

基本上我想排除src/main/webapp/css和包含build/tmp/css因为后者包含缩小的代码.我怎样才能做到这一点?我已尝试以各种方式指定绝对路径,但没有取得任何成功.

war {
  dependsOn minify
  from('build/tmp/') { include ('css/') }
  exclude('WEB-INF/classes/', 'css/')
}
Run Code Online (Sandbox Code Playgroud)

如果我不这样排除css/:

war {
  dependsOn minify
  from('build/tmp/') { include ('css/') }
  exclude('WEB-INF/classes/')
}
Run Code Online (Sandbox Code Playgroud)

然后结果是包括缩小和非缩小代码.

And*_*ess 5

我不确定为什么要排除WEB-INF/classes/css而不是src/main/webapp/css在build.gradle中,但是复制缩小的CSS文件而不是原始的CSS文件是通过以下方式实现的:

apply plugin: 'war'

war {
  // dependsOn 'minify'

  from 'src/main/webapp'
  exclude 'css' // or: "exclude 'WEB-INF/classes/css'"

  from('build/tmp/css') {
    include '**/*.css'
    into 'css' // or: "into 'WEB-INF/classes/css'"
  }
}
Run Code Online (Sandbox Code Playgroud)