2015-12-14 23 views
9

Tôi muốn sao chép một loạt các tệp và toàn bộ thư mục sang một thư mục khác trong một tác vụ Sao chép. Tôi có thể sao chép các tệp riêng lẻ và các nội dung của các thư mục, nhưng làm cách nào để sao chép chính thư mục đó?Làm thế nào để sao chép một thư mục bằng cách sử dụng tác vụ Sao chép ở dạng số

Đây là nhiệm vụ của tôi:

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

mà các bản sao các tập tin OK, nhưng chỉ các tập tin trong thư mục này. Tôi muốn kết thúc với nội dung của thư mục trong path/to/target/dir (không phải trong path/to/target).

Tôi tìm thấy một công việc xung quanh bằng cách sử dụng:

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

Nhưng điều đó là dễ bị va chạm tên. Tôi thực sự có nhiều tập tin và thư mục để sao chép, và tôi muốn làm cho nó một nhiệm vụ.

Trả lời

5

Có một cuốn sách có sẵn để tải về trên trang web Gradle here hoặc nhấp vào "Nhận Ebook miễn phí" here: "Gradle Beyond the Basics" cung cấp câu trả lời trực tiếp cho câu hỏi của bạn ở trang 3 (Chuyển đổi cấu trúc thư mục).

Áp dụng cho ví dụ bạn giải pháp sẽ thực hiện như sau:

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

Hạn chế là nó sẽ không tự động xác định tên của thư mục mục tiêu mức độ thứ hai (dir) từ nguồn nhưng nó là một cách tiếp cận sạch sẽ.

+0

wow, nó khác với câu trả lời của tôi – AdamSkywalker

+0

@adam. nhiều hơn "OO" - tùy biến của hành vi được chứa trong lệnh, trong khi của bạn là giống như một cuộc gọi lại hoặc khác vào lệnh – Bohemian

+0

@Bohemian tôi thấy cùng 4 dòng theo thứ tự khác :) – AdamSkywalker

5

Giải pháp duy nhất tôi biết vấn đề của bạn:

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

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

Hãy ghi nhớ rằng into: ('dir') công trình xây dựng tương đối để path/to/target/ vị trí

+0

Đó là một sự cải tiến, nhưng tôi không thể tin rằng không có cách nào để làm điều này đúng/chỉ đơn giản là – Bohemian

Các vấn đề liên quan