Tar Gradle 任务期间未包含某些文件
Some files are not included during a Tar Gradle task
我刚刚从 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。有什么解释吗?
感谢 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
There are a set of definitions that are excluded by default from all
directory-based tasks. As of Ant 1.8.1 they are:
**/*~
**/#*#
**/.#*
**/%*%
**/._*
**/CVS
**/CVS/**
**/.cvsignore
**/SCCS
**/SCCS/**
**/vssver.scc
**/.svn
**/.svn/**
**/.DS_Store
Ant 1.8.2 adds the following default excludes:
**/.git
**/.git/**
**/.gitattributes
**/.gitignore
**/.gitmodules
**/.hg
**/.hg/**
**/.hgignore
**/.hgsub
**/.hgsubstate
**/.hgtags
**/.bzr
**/.bzr/**
**/.bzrignore
我刚刚从 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。有什么解释吗?
感谢 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
There are a set of definitions that are excluded by default from all directory-based tasks. As of Ant 1.8.1 they are:
**/*~ **/#*# **/.#* **/%*% **/._* **/CVS **/CVS/** **/.cvsignore **/SCCS **/SCCS/** **/vssver.scc **/.svn **/.svn/** **/.DS_Store
Ant 1.8.2 adds the following default excludes:
**/.git **/.git/** **/.gitattributes **/.gitignore **/.gitmodules **/.hg **/.hg/** **/.hgignore **/.hgsub **/.hgsubstate **/.hgtags **/.bzr **/.bzr/** **/.bzrignore