2009-01-09 24 views
8

Nếu tôi có một fileset như thế này:Làm thế nào để có một Ant BAO GỒM NHỮNG SỰ fileset ưu tiên hơn một LOẠI TRỪ

<fileset dir="."> 
    <exclude name="classes/*"/> 
    <include name="**/zar.class"/> 
</fileset> 

Các loại trừ được ưu tiên hơn bao gồm và tôi không kết thúc với bất kỳ lớp học. [vì ví dụ giả định này, zar.class nằm trong dir lớp] Tôi muốn bao gồm tệp zar, mặc dù nó nằm trong thư mục lớp.

Tôi đập đầu vào cái này một lúc, đọc về bộ chọn, mẫu, tập hợp, cố kết hợp tập hợp, v.v. nhưng không thể làm cho nó hoạt động.

Bất kỳ ai biết cách thực hiện việc này?

Trả lời

2

Tôi không chắc chắn chính xác những gì bạn muốn nhưng tôi nghĩ rằng bạn đang đi đúng hướng nhìn pattersets: Làm thế nào về:

<patternset id="a"> 
    <exclude name="classes/*"/> 
</patternset> 

<patternset id="b"> 
    <include name="**/zar.class"/> 
</patternset> 

<fileset dir="."> 
    <patternset refid="a" /> 
    <patternset refid="b" /> 
</fileset> 
4

Tại sao bạn cần loại trừ yếu tố?

<fileset dir="."> 
    <include name="**/zar.class"/> 
</fileset> 

nên cung cấp cho bạn tập hợp chính xác các tệp mà bạn đang theo sau: zar.class và không có tệp nào khác trong số các tệp .class trong lớp /.


Chỉ cần đặt này trong chế độ cộng đồng wiki, bởi vì tôi không chắc chắn, về tư tưởng thứ hai, mà nó thực sự là những gì bạn đang sau:
bạn có thể muốn mọi thứ, bao gồm các lớp học /.../ zar.class, ngoại trừ các lớp/....

Giải pháp của tôi sẽ chỉ cung cấp cho bạn lớp zar.class.

Vui lòng để lại nhận xét: nếu đây không phải là giải pháp tốt, tôi sẽ xóa nó.

1

Phiên bản Ant nào được sử dụng trong câu hỏi gốc?

Với Ant 1.8.2, dấu phẩy sẽ tạo ra kết quả mong muốn!?

<fileset dir="." id="some.fileset"> 
    <exclude name="build/classes/*" /> 
    <include name="**/A.class" /> 
</fileset> 

<target name="test"> 
    <pathconvert pathsep="${line.separator}" property="listed.fileset" refid="some.fileset"/> 
    <echo message="${listed.fileset}" /> 
</target> 

Đường dẫn và tên hơi khác nhau, nhưng này không hiển thị A.class, và không hiển thị B.class, mà là ngay bên cạnh nó.

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