2010-11-22 32 views
6

Tôi có một mục tiêu kiến ​​tạo zip như thế này -Ant - Java - zipfileset - không bao gồm một thư mục

<zip destfile="${dist}/myzip.zip"> 
    <zipfileset dir="docs/manual" prefix="docs/userguide"/>  
</zip> 

này về cơ bản sẽ tạo ra lưu trữ myzip.zip với tất cả các file và thư mục dưới docs/manual bắt đầu bằng docs/userguide trong lưu trữ.

Nhưng tôi don' muốn bao gồm tất cả các thư mục dưới docs/manual được sao chép vào các kho lưu trữ, Tôi đã một thư mục gọi old dưới docs/manual mà tôi muốn loại bỏ ... Làm thế nào để đạt được điều này?

Trả lời

10

Từ ZipFileSet reference page

<zipfileset> hỗ trợ tất cả các thuộc tính của <fileset> ngoài những liệt kê dưới đây.

Vì vậy, hãy xem FileSet để tham khảo.

Đây là cách bạn làm điều đó:

<zipfileset dir="docs/manual" prefix="docs/userguide">  
    <exclude name="old/**"/> 
</zipfileset> 

hoặc inline như thuộc tính:

<zipfileset dir="docs/manual" prefix="docs/userguide" exclude="old/**" /> 

Cập nhật: Sử dụng ký tự đại diện tại thay vì tên đơn giản.

+0

Cám ơn câu trả lời của bạn, Nhưng điều này dường như không hoạt động để loại bỏ toàn bộ thư mục, bao giờ tôi có thể thấy rằng nếu tôi sử dụng bất kỳ tên tệp nào thay cho "cũ", tệp sẽ bị loại trừ. –

+0

OK, sau đó bạn cần sử dụng ký tự đại diện kiến. một cái gì đó như 'cũ/**' –

1
<zip destfile="${dist}/myzip.zip" excludes="docs/manual/old/**"> 
    <zipfileset dir="docs/manual" prefix="docs/userguide"/>  
</zip> 
2

bạn có thể loại trừ toàn bộ một thư mục bằng cách này:

<zipfileset dir="docs/manual" prefix="docs/userguide" exlcudes="**/old/**"/> 
+1

Câu trả lời này loại trừ tất cả các tệp trong thư mục đó VÀ chính thư mục đó. Câu trả lời được chấp nhận ở trên chỉ loại trừ nội dung của thư mục khi tôi thử nó, nhưng bản thân thư mục vẫn được bao gồm –

0

này là người duy nhất mà làm việc cho tôi để loại bỏ các mô hình tập tin cụ thể

<zip destfile="${bin.dir}/boo.jar"> 
    <zipfileset dir="${classes.dir}" excludes="**/*/BooCreator*.class"/> 
</zip> 
Các vấn đề liên quan