使用通配符将文件复制到目录

时间:2017-07-22 15:16:07

标签: tomcat gradle copy wildcard

Gradle:将战争复制到现有的tomcat

/path/tomcat-[version]/webapps

版本可以是任何版本,我不想对其进行硬编码。 / path下只有一个tomcat。

task copyWar(type: Copy) {
   from warPath
   destinationDir "/path/tomcat-*/webapps"

}

评估期间,tomcat目录不存在。

更新

尝试:

task copyWar(type: Copy) {
   from warPath

   doFirst {
        // find tomcat directory name, set tomcatName
        destinationDir file("/path/$tomcatName/webapps")
   }

}

Gradle抱怨未设置destinationDir。显然,在doFirst {}中设置它以进行最新检查为时已晚。

1 个答案:

答案 0 :(得分:0)

Gradle脚本基本上就是Groovy脚本,你可以这样做:

task copyWar(type:Copy) {
    from warPath
    def tomcatDir = new File("/path").listFiles().find {it.name.startsWith("tomcat-")}
    into new File(tomcatDir, "webapps")
}

请注意,此代码段将在配置阶段执行,并且包含文件系统访问权限,因此可能会导致配置阶段性能下降