2010-09-09 25 views
5

Tôi đang tìm cách sao chép một thư mục từ vị trí này sang vị trí khác. Tuy nhiên, sau khi xem "copy" và "copyDir" (không được chấp nhận) có vẻ như Ant, theo mặc định, chỉ sao chép nội dung của một vị trí này sang vị trí khác, không phải thư mục thực (và mọi thứ trong đó).Làm cách nào để sao chép thư mục từ vị trí này sang vị trí khác bằng cách sử dụng Ant?

Vì vậy, như một ví dụ tôi có như sau:

./Foo/test.txt 

Và tôi áp dụng các mảnh sau của Ant:

<copy todir="./build"> 
    <fileset dir="./Foo"/> 
</copy> 

Kết quả trông như thế này:

./build/test.txt 

Trong khi đó, tôi muốn nó là:

./build/Foo/test.txt 

Hy vọng điều đó có ý nghĩa. Làm thế nào tôi có thể làm điều đó?

Trả lời

3

Để duy trì cấu trúc bạn cần phải sao chép thư mục mẹ. Có một tùy chọn flatten trong lệnh copy, nhưng nó mặc định là false. Bạn cũng có thể tạo cấu trúc thư mục mà bạn muốn, sau đó sao chép ở cấp tệp thẳng vào thư mục mới của bạn.

Đây là dòng tương ứng từ reference:

Khi một fileset < > được sử dụng để chọn các tập tin để sao chép, thuộc tính todir phải được thiết lập. File đó là nằm dưới thư mục gốc của <fileset> sẽ được sao chép vào một thư mục bên dưới điểm đến thư mục phù hợp với đường dẫn tương đối đến thư mục cơ sở của <fileset>, trừ trường hợp flatten thuộc tính được thiết lập là true .

Vấn đề nằm ở chỗ bạn đang chọn lên các thư mục Foo, vì vậy bạn chỉ nhận được các tập tin dưới nó, bạn cần phải chọn thư mục trên Foo để có được những fileset nơi ~/Foo/file. Cấu trúc txt tồn tại.

+0

Tuyệt vời, cảm ơn vì điều đó. – sjwb

+0

Đã giúp tôi, đây là +1 :) – jfklein

3

gì về điều này:

<copy todir="./build"> 
    <fileset dir="."> 
    <include name="Foo/**"/> 
    </fileset> 
</copy> 
Các vấn đề liên quan