Ant - Các kiểu dữ liệu
Ant cung cấp một số kiểu dữ liệu được xác định trước. Đừng nhầm lẫn thuật ngữ "kiểu dữ liệu" với những kiểu dữ liệu có sẵn trong ngôn ngữ lập trình, thay vào đó hãy coi chúng như một tập hợp các dịch vụ đã được tích hợp sẵn trong sản phẩm.
Các kiểu dữ liệu sau đây được cung cấp bởi Apache Ant.
Tập tin
Các kiểu dữ liệu tập hợp tệp đại diện cho một tập hợp các tệp. Nó được sử dụng như một bộ lọc để bao gồm hoặc loại trừ các tệp phù hợp với một mẫu cụ thể.
Ví dụ, hãy tham khảo đoạn mã sau. Ở đây, thuộc tính src trỏ đến thư mục nguồn của dự án.
Tập hợp tệp chọn tất cả các tệp .java trong thư mục nguồn ngoại trừ những tệp có chứa từ 'Stub'. Bộ lọc phân biệt chữ hoa chữ thường được áp dụng cho tập tin có nghĩa là một tập tin có tên Samplestub.java sẽ không bị loại trừ khỏi tập tin.
<fileset dir = "${src}" casesensitive = "yes">
<include name = "**/*.java"/>
<exclude name = "**/*Stub*"/>
</fileset>
Bộ mẫu
Bộ mẫu là một mẫu cho phép dễ dàng lọc các tệp hoặc thư mục dựa trên các mẫu nhất định. Các mẫu có thể được tạo bằng cách sử dụng các ký tự meta sau:
? - Chỉ khớp với một ký tự.
* - Khớp không hoặc nhiều ký tự.
** - Đối sánh không hoặc nhiều thư mục một cách đệ quy.
Ví dụ sau đây mô tả việc sử dụng một bộ mẫu.
<patternset id = "java.files.without.stubs">
<include name = "src/**/*.java"/>
<exclude name = "src/**/*Stub*"/>
</patternset>
Sau đó, tập mẫu có thể được sử dụng lại với một tập tin như sau:
<fileset dir = "${src}" casesensitive = "yes">
<patternset refid = "java.files.without.stubs"/>
</fileset>
Danh sách tệp
Kiểu dữ liệu danh sách lọc tương tự với tập hợp tệp ngoại trừ những điểm khác biệt sau:
filelist chứa danh sách tệp được đặt tên rõ ràng và nó không hỗ trợ các thẻ đại diện.
kiểu dữ liệu danh sách có thể được áp dụng cho các tệp hiện có hoặc không tồn tại.
Chúng ta hãy xem ví dụ sau về kiểu dữ liệu danh sách lọc. Đây, thuộc tínhwebapp.src.folder trỏ đến thư mục nguồn ứng dụng web của dự án.
<filelist id = "config.files" dir = "${webapp.src.folder}">
<file name = "applicationConfig.xml"/>
<file name = "faces-config.xml"/>
<file name = "web.xml"/>
<file name = "portlet.xml"/>
</filelist>
Bộ lọc
Sử dụng kiểu dữ liệu bộ lọc cùng với tác vụ sao chép, bạn có thể thay thế một số văn bản nhất định trong tất cả các tệp phù hợp với mẫu bằng một giá trị thay thế.
Một ví dụ phổ biến là thêm số phiên bản vào tệp ghi chú phát hành, như được hiển thị trong đoạn mã sau.
<copy todir = "${output.dir}">
<fileset dir = "${releasenotes.dir}" includes = "**/*.txt"/>
<filterset>
<filter token = "VERSION" value = "${current.version}"/>
</filterset>
</copy>
Trong Bộ luật này -
Thuộc tính output.dir trỏ đến thư mục đầu ra của dự án.
Thuộc tính releasenotes.dir trỏ đến thư mục ghi chú phát hành của dự án.
Thuộc tính current.version trỏ đến thư mục phiên bản hiện tại của dự án.
Tác vụ sao chép, như tên cho thấy, được sử dụng để sao chép tệp từ vị trí này sang vị trí khác.
Con đường
Các pathkiểu dữ liệu thường được sử dụng để biểu diễn một đường dẫn lớp. Các mục trong đường dẫn được phân tách bằng dấu chấm phẩy hoặc dấu hai chấm. Tuy nhiên, các ký tự này được thay thế tại thời điểm chạy bằng ký tự phân cách đường dẫn của hệ thống thực thi.
Đường dẫn classpath được đặt thành danh sách các tệp và lớp jar trong dự án, như thể hiện trong ví dụ bên dưới.
<path id = "build.classpath.jar">
<pathelement path = "${env.J2EE_HOME}/${j2ee.jar}"/>
<fileset dir = "lib">
<include name = "**/*.jar"/>
</fileset>
</path>
Trong mã này -
Thuộc tính env.J2EE_HOME trỏ đến biến môi trường J2EE_HOME.
Thuộc tính j2ee.jar trỏ đến tên của tệp jar J2EE trong thư mục cơ sở J2EE.