2016-08-23 19 views
6

でディレクトリ全体をコピーします。私はこの試みた:は、私はこのようなディレクトリ構造を持っているのGradle

task mytest << { 
    copy { 
     from "file1.txt" 
     from "file2.txt" 
     from "dir1" 

     into "mytest" 
    } 
} 

をしかし、これは次のようになり:私はdir1自体をコピーするのに対し、

mytest/ 
    file1.txt 
    file2.txt 
    file3.txt 
    file4.txt 

を参照してください、dir1からのコピーは、ファイルにdir1をコピーしました。

Gradle copyでこれを直接行うことはできますか?

はこれまでのところ、私はこの解決策を考え出すことができた:私の簡単な例について

task mytest << { 
    copy { 
     from "file1.txt" 
     from "file2.txt" 

     into "mytest" 
    } 

    copy { 
     from "dir1" 
     into "mytest/dir1" 
    } 
} 

多くはそれにそこではないのですが、私の実際のケースでは、私はコピーする多くのディレクトリが存在し、それほど繰り返す必要はないと思います。あなたがコピーしたいファイルやディレクトリ、指定したディレクトリ・パスとincludeとして.を使用することができます

答えて

13

copy { 
    from '.' 
    into 'mytest' 
    include 'file*.txt' 
    include 'dir1/**' 
} 

frominto両方がディレクトリであれば、あなたは完全なコピーになってしまいます宛先ディレクトリのソースディレクトリの名前。

+0

この問題は、コピーしたくない*このフォルダに他のファイルがある場合です。私は 'excludes'パラメータを使うことができますが、将来は他のサブディレクトリが追加される可能性があるため、エラーが発生しやすくなります。 – Kip

+0

'include'はあなたのために働きますか?コピーしたいファイル/ディレクトリを指定する方法を示す答えを広げました。 –

+0

は大変感謝しています! – Kip

0

これはもう少し遅いですが、私は上記の@Andrewソリューションを試してみたところ、ディレクトリ内のすべてをコピーしました。 "最近では直接グラデルを表現する必要はありません。 は、だから私はそれに基づいていくつかの研究 を行なったし、

thisを発見し、(最新状態チェックで)次のコードを作成しました:

タスクresourcesCopy(){

doLast { 
    copy { 
     from "src/main/resources" 
     into "./target/dist/WEB-INF/classes" 
    } 
    copy { 
     from "GeoIP2.conf" 
     into "./target/dist/WEB-INF" 
    } 
} 

}

-1

多分役に立ちます:ディレクトリ全体を再帰的にコピーするためのfileTreeの使用例:

task mytest << { 
    copy { 
     from fileTree('.') 
     into "mytest" 
    } 
} 
関連する問題