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

某些文件在Tar Gradle任务期间不包括在内,gradle,tar,Gradle,Tar,我刚刚在GradleTar任务中观察到一种非常奇怪的行为 让我们举一个简单的例子,2个文件: /tmp/test$ ls test1.txt ##test2## 下面是一个简单的Tar任务: task('testHash', type: Tar) { from "/tmp/test" extension = 'tar.gz' compression = Compression.GZIP } 运行gradle testHash后,出于某种原因跳过文件##test2##

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

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

/tmp/test$ ls
test1.txt  ##test2##
下面是一个简单的
Tar
任务:

task('testHash', type: Tar) {
    from "/tmp/test"
    extension = 'tar.gz'
    compression = Compression.GZIP
}
运行
gradle testHash
后,出于某种原因跳过文件
##test2###

/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##

我使用的是Gradle4.1。有什么解释吗?

多亏了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
}
仅供参考,这里是

默认情况下,有一组定义从所有定义中排除 基于目录的任务。截至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

多亏了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
}
仅供参考,这里是

默认情况下,有一组定义从所有定义中排除 基于目录的任务。截至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

不久前,gradle配置了默认排除-与ant相同。也许这里就是这样,但是我找不到任何可靠的东西。根据Gradle DSL,如果不提供排除,那么就不会排除任何文件,我也读过。然而,我仍然记得不久前我遇到过类似的问题,这些默认排除模式是罪魁祸首。我们可以找到
****
。还没有解决方案,但谢谢,很好的猜测;)不久前,gradle配置了默认排除-与ant相同。也许这里就是这样,但是我找不到任何可靠的东西。根据Gradle DSL,如果不提供排除,那么就不会排除任何文件,我也读过。然而,我仍然记得不久前我遇到过类似的问题,这些默认排除模式是罪魁祸首。我们可以找到
****
。还没有解决方案,但谢谢,很好的猜测;)