2010-03-26 41 views
43

Tôi đang xem qua tài liệu đi kèm với Apache Ant phiên bản 1.8.0 và không thể tìm thấy nơi mà classpath, đường dẫn và pathelement được ghi lại. Tôi đã tìm thấy một trang mô tả đường dẫn như cấu trúc nhưng nó không liệt kê các thuộc tính hợp lệ hoặc các phần tử lồng nhau cho các cấu trúc này. Một thứ khác mà tôi không thể tìm thấy trong tài liệu là mô tả về mối quan hệ giữa filelist, fileset, patternset và đường dẫn và cách chuyển đổi chúng qua lại. Ví dụ, phải có một cách dễ dàng hơn để biên dịch chỉ những lớp đó trong một gói trong khi loại bỏ tất cả các phụ thuộc lớp trên các lớp gói và cập nhật tài liệu.Đường dẫn lớp, đường dẫn và đường dẫn được tài liệu trong Ant phiên bản 1.8.0 ở đâu?

<!-- Get list of files in which we're interested. --> 
<fileset id = "java.source.set" 
    dir  = "${src}"> 
    <include name = "**/Package/*.java" /> 
</fileset> 

<!-- Get a COMMA separated list of classes to compile. --> 
<pathconvert property = "java.source.list" 
    refid    = "java.source.set" 
    pathsep   = ","> 
    <globmapper from = "${src}/*[email protected]{src.extent}" 
     to   = "*.class" /> 
</pathconvert> 

<!-- Remove ALL dependencies on package classes. --> 
<depend srcdir = "${src}" 
    destdir = "${build}" 
    includes = "${java.source.list}" 
    closure = "yes" /> 

<!-- Get a list of up to date classes. --> 
<fileset id = "class.uptodate.set" 
    dir  = "${build}"> 
    <include name = "**/*.class" /> 
</fileset> 

<!-- Get list of source files for up to date classes. --> 
<pathconvert property = "java.uptodate.list" 
    refid    = "class.uptodate.set" 
    pathsep   = ","> 
    <globmapper from="${build}/*.class" to="*.java" /> 
</pathconvert> 

<!-- Compile only those classes in package that are not up to date. --> 
<javac srcdir = "${src}" 
    destdir  = "${build}" 
    classpathref = "compile.classpath" 
    includes  = "${java.source.list}" 
    excludes  = "${java.uptodate.list}"/> 

<!-- Get list of directories of class files for package. --: 
<pathconvert property = "class.dir.list" 
    refid    = "java.source.set" 
    pathsep   = ","> 
    <globmapper from = "${src}/*.java" 
     to   = "${build}*" /> 
</pathconvert> 

<!-- Convert directory list to path. --> 
<path id = "class.dirs.path"> 
    <dirset dir = "${build}" 
     includes = "class.dir.list" /> 
</path> 

<!-- Update package documentation. --> 
<jdepend outputfile = "${docs}/jdepend-report.txt"> 
    <classpath refid = "compile.classpath" /> 
    <classpath location = "${build}" /> 
    <classespath> 
    <path refid = "class.dirs.path" /> 
    </classespath> 
    <exclude name = "java.*" /> 
    <exclude name = "javax.*" /> 
</jdepend> 

Lưu ý có một số chuyển đổi giữa filesets, đường dẫn và danh sách được phân tách bằng dấu phẩy chỉ để có được 'loại' phù hợp cần thiết cho các tác vụ kiến ​​khác nhau. Có cách nào để đơn giản hóa điều này trong khi vẫn xử lý các tệp ít nhất trong cấu trúc thư mục phức tạp?

+4

Tôi ước gì tôi có thể bỏ phiếu lên hơn này. Các trang người đàn ông cho 'ant' hoàn toàn hút. Họ là vô giá trị. – jww

Trả lời

11

Đây là gần nhất tôi có thể tìm thấy tài liệu về classpath.

http://ant.apache.org/manual/using.html#path

+6

Yea, tôi thấy rằng nó không đi sâu vào chi tiết. Cụ thể là nó không nói thuộc tính nào hoặc các phần tử lồng nhau là hợp lệ. –

+2

ANT doco tập trung vào các tác vụ. Các phần khác bạn học bằng cách thẩm thấu :-) Ví dụ tham khảo đã cho tôi một thời gian dài để tìm ra (http://ant.apache.org/manual/using.html#references) –

+0

Vì vậy, đây là một câu trả lời khá vô ích . Không có gì, nhưng liên kết đến tài liệu mà không thực sự có một giải pháp trong nó hoặc là không đóng góp nhiều. – Fulluphigh

0

Path:

Đối tượng này đại diện cho một con đường như được sử dụng bởi CLASSPATH hoặc môi trường PATH biến. Một đường dẫn cũng có thể được mô tả như là một tập hợp các tài nguyên hệ thống tập tin duy nhất.

PathElement:

lớp Helper, giữ <pathelement> giá trị lồng nhau.

được xác định trực tiếp trong JavaDoc.

ClassPath là một thực hiện AbstractClasspathResource:

Một Resource đại diện của bất cứ điều gì mà được truy cập thông qua một classloader Java. Các phương thức cốt lõi để thiết lập/giải quyết đường dẫn lớp được cung cấp.

mà là một lớp con trực tiếp của Resource:

Mô tả một "File-như" tài nguyên (File, ZipEntry, vv). Lớp này có nghĩa là được sử dụng bởi các lớp cần ghi lại đường dẫn và thông tin ngày/giờ về tệp, mục nhập zip hoặc một số tài nguyên tương tự (URL, lưu trữ trong kho kiểm soát phiên bản, ...).

Ant Class Diagram

fileset được định nghĩa là:

một fileset là một nhóm các tập tin. Những tập tin này có thể được tìm thấy trong một cây thư mục bắt đầu trong một thư mục cơ sở và được kết hợp bởi các mẫu được lấy từ một số PatternSets và Selectors.

Selectors được định nghĩa là:

Selectors là một cơ chế theo đó các tập tin tạo nên một <fileset> có thể được lựa chọn dựa trên các tiêu chí khác hơn là tên tập tin theo quy định của các <include><exclude> thẻ.

PatternSet được định nghĩa là:

Patterns thể được nhóm lại để bộ và sau đó được tham chiếu bởi thuộc tính id của họ. Chúng được định nghĩa thông qua một phần tử patternset, có thể xuất hiện lồng vào một FileSet hoặc một nhiệm vụ dựa trên thư mục cấu thành một FileSet ngầm định. Ngoài ra, các mẫu có thể được định nghĩa là phần tử độc lập ở cùng cấp với mục tiêu - tức là, là con của dự án cũng như con của mục tiêu.

FileList được định nghĩa là:

FileLists được đặt tên một cách rõ ràng danh sách các tập tin. Trong khi FileSets hoạt động như bộ lọc, chỉ trả lại những tệp tồn tại trong hệ thống tệp và khớp với các mẫu được chỉ định, thì FileLists rất hữu ích để chỉ định các tệp có thể tồn tại hoặc không tồn tại. Nhiều tệp được chỉ định dưới dạng danh sách tệp, liên quan đến thư mục được chỉ định, không hỗ trợ mở rộng ký tự đại diện (tên tệp có ký tự đại diện sẽ được bao gồm trong danh sách không thay đổi). FileLists có thể xuất hiện bên trong các tác vụ hỗ trợ tính năng này hoặc dưới dạng các kiểu độc lập.

Ant Resource Collections

Trong Schematron, bạn có thể xác nhận điều này bằng cách sau:

<sch:pattern> 

     <sch:title>Check allowed elements</sch:title> 

     <sch:rule context="target/*[name() = ancestor::*/taskdef/@name]"> 

       <sch:assert test="true()"> 

       The target element may contain user-defined tasks. 

      </sch:assert> 

     </sch:rule> 

</sch:pattern>   

Tài liệu tham khảo

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