2015-12-14 22 views
9

Chcę skopiować zakres plików i całych katalogów do innego katalogu w jednym zadaniu Kopiuj. Mogę kopiować pojedyncze pliki i katalogi, ale jak mogę skopiować sam katalog?Jak skopiować katalog za pomocą zadania Kopiuj w gradle

To jest moje zadanie:

task myTask(type: Copy) { 
    from 'path/to/file' 
    from 'path/to/dir' 
    into 'path/to/target' 
} 

który kopiuje plik OK, ale tylko te pliki w reż. Chcę skończyć z zawartością katalogu w path/to/target/dir (nie w path/to/target).

znalazłem obejść za pomocą:

task myTask(type: Copy) { 
    from 'path/to/file' 
    from 'path/to' 
    into 'path/to/target' 
    include 'dir' 
} 

Ale to ma skłonność do kolizji nazw. W rzeczywistości mam wiele plików i katalogów do skopiowania, a chcę, aby było to jedno zadanie.

Odpowiedz

5

Jest to książka, która jest dostępna do pobrania na stronie Gradle here lub kliknij "Uzyskaj bezpłatny ebook" here: "Gradle Beyond the Basics", który zapewnia bezpośrednią odpowiedź na twoje pytanie na stronie 3 (Transforming Directory Structure).

zastosowana do przykładu rozwiązaniem byłby następujący:

task myTask(type: Copy) { 
     from 'path/to/file' 
     from 'path/to/dir' { 
      into 'dir' 
     } 
     into 'path/to/target' 
    } 

Ograniczeniem jest to, że nie będzie dynamicznie określić nazwę katalogu docelowego Drugi poziom (reż) od źródła, ale jest czyste podejście.

+0

wow, to tak różni się od mojej odpowiedzi – AdamSkywalker

+0

@adam też jest lepszym rozwiązaniem niż twoje, ponieważ to jest więcej "OO" - personalizacja zachowania zawarta jest w poleceniu, podczas gdy twoja jest bardziej podobna do callbacka lub inna do komendy – Bohemian

+0

@Bohemian widzę te same 4 linie w innej kolejności :) – AdamSkywalker

5

Jedynym rozwiązaniem wiem dla swojego problemu:

task myTask(type: Copy) { 
    into 'path/to/target' 
    from 'path/to/file' 

    into ('dir') { 
     from 'path/to/dir'   
    } 
} 

pamiętać, że into: ('dir') robót w stosunku do path/to/target/ lokalizacji

+0

To jest poprawa, ale nie mogę uwierzyć, że nie ma sposobu, aby to zrobić poprawnie/po prostu – Bohemian

Powiązane problemy