2017-09-08 1 views
0

Gradle Tar 작업에서 매우 이상한 동작이 관찰되었습니다.일부 파일은 Tar Gradle 작업 중에 포함되지 않습니다.

의 간단한 예를 들어 보자, 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 

fi가 발생하면 파일 이름은 처음과 끝에 모두 # 문자를 포함합니다.

정기적 tar

은 잘 작동 : 나는 Gradle을 4.1을 사용하고

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

. 설명이 뭐야?

+0

전에 Gradle을가 기본 제외가 구성한 일부 시간 - 개미와 같은. 어쩌면 여기가 여기에 해당하지만, 나는 신뢰할만한 것을 찾을 수 없다. – Opal

+0

Gradle DSL에 따르면 * 배제가 제공되지 않으면 파일이 제외되지 않습니다. * – ToYonos

+0

네, 저도 그걸 읽었습니다. 그러나 나는 아직도 비슷한 문제에 직면하고있는 것을 기억하고 있으며,이 기본 제외 패턴은 책임이있다. – Opal

답변

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

있습니다. 개미 1.8.1 현재 그들은 :

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

개미 1.8.2은 다음과 같은 기본 제외를 추가

**/.git 
**/.git/** 
**/.gitattributes 
**/.gitignore 
**/.gitmodules 
**/.hg 
**/.hg/** 
**/.hgignore 
**/.hgsub 
**/.hgsubstate 
**/.hgtags 
**/.bzr 
**/.bzr/** 
**/.bzrignore 
관련 문제