2012-02-01 21 views
5

Vì tệp kiến ​​của tôi khá phức tạp, tôi muốn mô đun hóa các phần tử classpath của mình.Modularizing classpaths trong ant script (ví dụ: thông qua refid)

Hiện nay, tôi sử dụng refid theo cách sau:

<path id="compile.classpath"> 
    <pathelement path="foo"/> 
    <!-- ... --> 
</path> 

<path id="test.classpath"> 
    <path refid="compile.classpath"/> 
    <pathelement path="bar"/> 
    <!-- ... --> 
</path> 

<!-- ... --> 

    <javac> 
     <classpath refid="compile.classpath"/> 
    </javac> 

    <junit> 
     <!-- ... --> 
     <classpath> 
      <path refid="test.classpath"/> 
      <path path="bazz"/> 
     </classpath> 
    </junit> 

<!-- ... --> 

Đây có phải là một cách tiếp cận hợp lý? Hoặc là có một tốt hơn?

Có ổn không khi sử dụng id đường dẫn (compile.classpath) cho một đường dẫn-classid-refid (trong <javac>)? (Nó hiện đang hoạt động, nhưng refid đòi hỏi các yếu tố để được cùng loại. Kể từ pathclasspath đều cấu trúc kiểu đường dẫn, là họ cùng loại?)

Trả lời

5

Tôi sử dụng thành công phương pháp này tại một công việc trước đây và đó thực sự là cách duy nhất tôi có thể giữ mọi thứ lành mạnh.

Tôi cuối cùng đã tiến thêm một bước để đặt tất cả định nghĩa thư viện của bên thứ ba vào một tệp riêng biệt ext-libs.xml vì một vài trong số đó là các thư viện đa jar và đảm bảo rằng tất cả chúng chứa trong các tệp chiến tranh cuối cùng của tôi là một rắc rối khổng lồ. Bằng cách đó, trong chính tôi build.xml (và những người khác) tôi có thể tham khảo, nói rằng, lib.jaxb và không phải lo lắng rằng tôi đã cập nhật số phiên bản trong tên tệp ở khắp mọi nơi.

Bạn đã tìm ra mẹo để mở rộng đường dẫn biên dịch của bạn để tạo đường dẫn thử nghiệm, vì vậy bạn đang đi đúng hướng.

Tóm lại, nhấn vào.

+0

Cảm ơn bạn đã xác nhận phương pháp của tôi (+1). Vì tôi không muốn bao gồm tất cả các thư viện của bên thứ ba ở khắp mọi nơi, tôi đã thực hiện một số nhóm trong các phần tử đường dẫn, như compile.classpath và test.classpath, sau đó tôi có thể kết hợp và mở rộng. Nó hoạt động, tôi chỉ không chắc chắn có một số giải pháp tiêu chuẩn cho điều này mà tôi đã bỏ lỡ. – DaveFar

+0

Tôi không biết đó có phải là tiêu chuẩn hay không, nhưng nó có hiệu quả đối với tôi. – Argyle

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