2017-09-08 3 views
0

Gradle Tarタスクから非常に奇妙な動作が観察されました。いくつかのファイルはTar Gradleタスクでは含まれていません

は2つのファイル、簡単な例を見てみましょう:

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

ファイル##test2##gradle testHashを実行した後、何らかの理由でスキップされます:

ここ

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

は、単純なTarタスクがあります

/path/to/gradle/project/foo$ tar tvf build/distributions/foo-1.0.tar.gz 
test1.txt 

これは、fiファイル名には最初と最後の両方に#文字が含まれています。

定期tarがうまく機能している:

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

私はGradleの4.1を使用しています。説明は?

+0

前のGradleがデフォルトの除外が構成されていたいくつかの時間 - アリと同じ。たぶんこれはここのケースですが、信頼できるものは何も見つかりません。 – Opal

+0

Gradle DSLによると、*除外が提供されない場合、ファイルは除外されません。* – ToYonos

+0

はい、それも読んでいます。しかし、以前は似たような問題に直面していることを忘れないでください。これらのデフォルト除外パターンは責任を負うものでした。 – Opal

答えて

1

オパールのコメントのおかげで、私は検索を調整し、回避策を見つけました。そこきれいな方法は、多分ですが、この1つは私

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

の作品はFYI、ここですべての ディレクトリベースのタスクからデフォルトで除外されている定義のセットがあります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 
関連する問題