Gradle 如何在processResources中的各种文件类型上运行多个筛选器

Gradle 如何在processResources中的各种文件类型上运行多个筛选器,gradle,build.gradle,Gradle,Build.gradle,在将某个源代码移到构建目录之前,我正在尝试对其进行一些处理。具体来说,对于具有.template名称的文件,将@timestamp@的实例替换为我定义的timestamp变量。另外,对于.jsp文件,我想删除标记之间的空白 第一部分是替换时间戳。替换JSP中的空白不会导致错误 processResources { def timeStamp = Long.toString(System.currentTimeMillis()) from ('../src/resources/we

在将某个源代码移到构建目录之前,我正在尝试对其进行一些处理。具体来说,对于具有.template名称的文件,将
@timestamp@
的实例替换为我定义的
timestamp
变量。另外,对于.jsp文件,我想删除标记之间的空白

第一部分是替换时间戳。替换JSP中的空白不会导致错误

processResources {
    def timeStamp = Long.toString(System.currentTimeMillis())
    from ('../src/resources/webapp') {
        include '**/*.template'
        filter {
            it.replace('@timestamp@', timeStamp)
        }
        rename '(.*)\\.template', '$1'
    }
    from ('../src/resources/webapp') {
        include '**/*.jsp'
        filter {
            it.replace('>\\s+<', '><')
        }
    }
}
使用copy过滤像这样的文件是有效的,但是,我注意到我无法从一个位置复制到它自己——文件最终将是空的。这意味着我必须将文件从一个中间目录复制到另一个中间目录,并在每一步应用一个过滤器


我希望能够在一个步骤中将各种转换应用于我的源代码。如何修复我的
processResources
任务?

使用
eachFile
打印正在处理的文件并调试任务。可能
-i
-d
开关也会有所帮助。使用
每个文件
打印正在处理的文件并调试任务可能会出现重复。可能
-i
-d
开关也会有帮助。可能的
task minifyJSPs(type: Copy) {
    from ('../src/resources/webapp') {
        include '**/*.jsp'
        filter {
            it.replace('>\\s+<', '><')
        }
    }
    into 'gbuild'
}