Tar Gradle任务期间不包括某些文件

时间:2017-09-08 08:38:39

标签: gradle tar

我刚从Gradle Tar任务中观察到一种非常奇怪的行为。

我们举一个简单的例子,2个文件:

/tmp/test$ ls
test1.txt  ##test2##

这是一个简单的Tar任务:

task('testHash', type: Tar) {
    from "/tmp/test"
    extension = 'tar.gz'
    compression = Compression.GZIP
}

在运行##test2##

之后,文件gradle testHash由于某种原因被跳过
/path/to/gradle/project/foo$ tar tvf build/distributions/foo-1.0.tar.gz 
test1.txt

当文件名在开头和结尾都包含#字符时,似乎会发生这种情况。

常规tar运作良好:

/tmp/test$ tar czvf test.tar.gz *
test1.txt                                                                                                                                                                                                            
##test2##                                                                                                                                                                                                            
/tmp/test$ tar tf test.tar.gz                                                                                                                                                
test1.txt                                                                                                                                                                                                            
##test2##

我正在使用Gradle 4.1。有什么解释吗?

1 个答案:

答案 0 :(得分:2)

感谢Opal的评论,我调整了我的搜索并找到了解决方法。可能有一种更清洁的方式,但这个适用于我

task('testHash', type: Tar) {
    doFirst {
        org.apache.tools.ant.DirectoryScanner.defaultExcludes.each {
            DirectoryScanner.removeDefaultExclude it
        }
    }
    from "/tmp/test"
    extension = 'tar.gz'
    compression = Compression.GZIP
}

仅供参考,这里是default excludes

  

默认情况下,有一组定义被排除在外   基于目录的任务。从Ant 1.8.1开始,它们是:

 **/*~
 **/#*#
 **/.#*
 **/%*%
 **/._*
 **/CVS
 **/CVS/**
 **/.cvsignore
 **/SCCS
 **/SCCS/**
 **/vssver.scc
 **/.svn
 **/.svn/**
 **/.DS_Store
     

Ant 1.8.2添加了以下默认排除:

 **/.git
 **/.git/**
 **/.gitattributes
 **/.gitignore
 **/.gitmodules
 **/.hg
 **/.hg/**
 **/.hgignore
 **/.hgsub
 **/.hgsubstate
 **/.hgtags
 **/.bzr
 **/.bzr/**
 **/.bzrignore