2012-03-15 33 views
6

Tôi có hai câu hỏi về dirset type trong Apache Ant.Ant: Hai câu hỏi về dirsets

  • Tập lệnh thực sự là một bộ, không có thứ tự được đảm bảo hay nó giữ nguyên thứ tự nhập liệu? Tôi muốn sử dụng kiến: contrib để lặp qua một tập hợp các thư mục và thứ tự các vấn đề, vì vậy nếu dirset của Ant không bảo tồn thứ tự chèn, tôi có lựa chọn thay thế nào?
  • Làm cách nào để kiểm tra xem một thư mục nhất định có được bao gồm trong dirset không?

Trả lời

3

[Chỉnh sửa]

Nếu bạn nhìn vào dirset source Dường như nó sử dụng java File.list(), mà documentation khẳng định rằng không có lệnh gauranteed. Vì vậy, không bạn không thể tin tưởng vào điều đó hoàn toàn. Tuy nhiên, trước khi trở về nó gọi Arrays.sort(files); Xem Dòng 1572.


Theo giữ gìn trật tự tôi không thể nói, tôi sẽ nguy hiểm mà không có đảm bảo nhưng nó thường chỉ xảy ra để giữ gìn trật tự hệ thống tập tin .

Như để thử nghiệm, tôi đoán bạn muốn, làm hành động nếu tập tin này tồn tại hay một cái gì đó tương tự, sử dụng contrib ant,

<for param="directory"> 
<dirset dir="dirIneedtoexist"> 
</dirset> 
<sequential> 
    <!-- Stuff to do if it exists. -->   
</sequential> 
</for> 

Nếu không có gì trong dirset nếu sẽ không làm bất cứ điều gì là.

1

Không có nhiều tài liệu về Ant về dirset.

Nếu bạn sử dụng patternset, không đảm bảo đơn đặt hàng.

Nếu bạn sử dụng include, liệt kê từng thư mục thay vì mẫu, dirset nên giữ nguyên thứ tự. Tôi sẽ kiểm tra điều này mặc dù, để chắc chắn.

Đã chỉnh sửa để thêm: Trong trường hợp tôi sai, bạn có thể viết Ant custom task của riêng mình để bảo vệ thứ tự của các thư mục bao gồm.

+0

Tôi đã nói chuyện quá sớm. Như Andrew đã chỉ ra, các tệp được chèn vào được [sắp xếp] (http://javasourcecode.org/html/open-source/ant/ant-1.6.4/org/apache/tools/ant/DirectoryScanner.java.html#line. 1299) vì vậy thứ tự chèn không được bảo tồn. –

+0

@Mike Samuel: Sắp xếp mảng là một phương thức liên quan đến các mẫu bao gồm. Tôi phải dành nhiều thời gian hơn để nghiên cứu mã nguồn dirset để chắc chắn. Nó sẽ nhanh hơn để kiểm tra những gì tôi đã nói. –

+0

không có đường dẫn mã cho các tệp được bao gồm không đi qua trình quét thư mục và không có các kiểm tra như vậy, câu trả lời của bạn dường như không có nội dung. –

0

Không có nó không bảo vệ trật tự.

Nội dung của dirset dựa trên nội dung parent class hiển thị thông qua số DirectoryScanner. Máy quét đó đi vào hệ thống tệp và không làm như vậy theo bất kỳ thứ tự cụ thể nào.

Nó cũng sử dụng File.list mà là một nguồn trật tự không định mệnh:

Không có đảm bảo rằng các chuỗi tên trong mảng kết quả sẽ xuất hiện trong bất kỳ thứ tự cụ thể; họ không, đặc biệt, được bảo đảm để xuất hiện theo thứ tự bảng chữ cái.

+0

Chúng [sắp xếp] (http://javasourcecode.org/html/open-source/ant/ant-1.6.4/org/apache/tools/ant/DirectoryScanner.java.html#line.1299) trước khi trở về . – Andrew

+0

@Andrew, chúng sắp xếp kết quả của các tệp được bao gồm ở đó, chứ không phải kết quả của quá trình quét thư mục. –

1

Theo page

dirset này Thêm một thư mục thiết lập để xây dựng con đường ngầm.Lưu ý rằng các thư mục sẽ được thêm vào đường dẫn xây dựng không theo thứ tự cụ thể, vì vậy nếu thứ tự quan trọng, bạn nên sử dụng danh sách tệp để thay thế!

Dưới đây là liên kết về cách sử dụng FileList