在Gradle文件中使用通配符,然后复制(如果存在)

时间:2019-05-29 18:39:59

标签: gradle

很简单,我想查找所有以* .sql结尾的文件,并复制它们(如果存在)。 etc目录中可能有0个或更多文件。

    File sqlfiles = file('etc/' + '*.sql')
    logger.info("Looking for SQL files: " + sqlfiles);
    if (sqlfiles.exists())
    {
        logger.info("Found log SQL file: " + sqlfiles);

        copy
                {
                    from sqlfiles
                    into "$rpmStoredir"
                }
    }
    else
    {
        logger.warn("No SQL file found - skipping");
    }

使用我的代码,通配符在这里不起作用。

因此,如下所示在副本中添加“包含”是可行的,但是我只想弄清楚如果文件不存在该如何添加记录器

copy
{
    from "etc/"
    include "*.sql"
    into "$rpmStoredir"
}

1 个答案:

答案 0 :(得分:1)

file(...)是错误的方法,因为它会返回单个java.io.File

您可以做类似

的操作
FileTree myTree = fileTree('etc') {
   include '*.sql'
}
if (myTree.empty) {
  ... 
} else {
   copy {
      from myTree
      ... 
   } 
} 

请参见Project.fileTree(Object, Closure)FileTree