某些文件在Tar Gradle任务期间不包括在内
我刚刚在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##
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,如果不提供排除,那么就不会排除任何文件,我也读过。然而,我仍然记得不久前我遇到过类似的问题,这些默认排除模式是罪魁祸首。我们可以找到****
。还没有解决方案,但谢谢,很好的猜测;)