2009-04-17 30 views
14

Tôi đang làm việc trên một hệ thống C++ lớn được xây dựng với kiến ​​+ cpptasks. Nó hoạt động đủ tốt, nhưng tệp build.xml sẽ bị mất, do quy trình vận hành chuẩn để thêm thư viện mới hoặc đích thực thi là sao chép và dán các quy tắc khác của lib/exe (đã khá lớn). Nếu điều này là "mã thích hợp", nó sẽ được la hét ra để tái cấu trúc, nhưng là một newbie kiến ​​(nhiều được sử dụng để thực hiện hoặc các giải pháp VisualStudio) Tôi không chắc chắn những gì các tùy chọn được.Làm thế nào để bạn "refactor" ant build.xml tệp?

Các phương pháp hay nhất của người dùng kiến ​​để ngăn chặn việc tạo kiến ​​các tệp đang phát nổ là gì?

Một lựa chọn hiển nhiên sẽ là để sản xuất build.xml qua XSLT, xác định các thẻ của riêng của chúng tôi cho các mẫu thường tái phát. Có ai làm điều đó, hoặc có cách nào tốt hơn?

Trả lời

13

bạn có thể quan tâm đến:

Kiểm tra cũng bài viết này trên "ant features for big projects".

+2

Các liên kết không hoạt động nữa. Các liên kết cố định: http://ant.apache.org/manual/Tasks/macrodef.html và http://ant.apache.org/manual/Tasks/import.html và http://ant.apache.org/manual /Tasks/subant.html –

+1

Cố định các liên kết bị hỏng. –

5

Nếu các quy tắc được lặp đi lặp lại thì bạn có thể đưa chúng vào macro macro bằng cách sử dụng macrodef và sử dụng lại macro đó.

Nếu đó là kích thước tuyệt đối của tệp không thể quản lý được, thì bạn có thể chia nhỏ tệp đó thành các tệp nhỏ hơn và có mục tiêu cuộc gọi build.xml chính trong các tệp đó.

Nếu không phải như vậy, bạn có thể cân nhắc sử dụng hệ thống xây dựng. Mặc dù tôi đã không sử dụng bản thân Maven, tôi nghe nó có thể giải quyết được nhiều vấn đề về các tệp xây dựng lớn và không thể quản lý được.

1

Tôi sẽ thử Ant-Ivy- the agile dependency manager. Chúng tôi gần đây đã bắt đầu sử dụng nó cho một số hệ thống phức tạp hơn của chúng tôi và nó hoạt động như một sự quyến rũ. Lợi thế ở đây là bạn không nhận được chi phí trên cao và chuyển tiếp cho maven (nó sử dụng các mục tiêu ant vì vậy sẽ làm việc với thiết lập hiện tại của bạn). Here is a comparison giữa hai người.

3

Nói chung, nếu xây dựng tập tin của bạn là lớn và phức tạp thì đây là một dấu hiệu rõ ràng rằng cách bạn có mã của bạn đặt ra, trong điều kiện của các thư mục và các gói, nó phức tạp và quá phức tạp. Tôi thấy rằng một kịch bản kiến ​​phức tạp là một mùi rõ ràng của một cơ sở mã kém đặt ra.

Để khắc phục điều này, hãy suy nghĩ về cách mã của bạn được đặt ra. Bạn có bao nhiêu dự án? Những dự án đó có biết cách xây dựng bản thân bằng một kịch bản xây dựng chính để biết cách gộp các dự án/ứng dụng/thành phần riêng lẻ lại với nhau thành một tổng thể lớn hơn hay không.

Khi bạn đang tái cấu trúc mã, bạn đang tìm cách hoặc chia nhỏ mọi thứ để dễ hiểu hơn - các phương thức nhỏ hơn, các lớp, phương thức và lớp học nhỏ hơn làm một việc. Bạn cũng cần phải áp dụng cùng các nguyên tắc này cho cơ sở mã của mình.

Tạo các thành phần nhỏ hơn có chức năng cố kết và được tách rời rất nhiều từ phần còn lại của mã. Sử dụng một kịch bản xây dựng để xây dựng thành phần đó vào một thư viện. Làm điều này với phần còn lại của mã của bạn. Bây giờ tạo một kịch bản lệnh xây dựng chính để biết cách gộp tất cả các thư viện của bạn và xây dựng chúng vào ứng dụng của bạn. Nếu bạn có nhiều ứng dụng, hãy tạo tập lệnh xây dựng cho từng ứng dụng và một ứng dụng chính để biết cách kết hợp các ứng dụng thành phân phối.

Bạn sẽ có thể xem và hiểu bố cục và cấu trúc của cơ sở mã của bạn chỉ bằng cách xem các tập lệnh xây dựng của bạn. Nếu chúng không sạch sẽ và dễ hiểu thì mã nguồn của bạn cũng không được.

3

Sử dụng các tệp Antlib. Đó là một cách rất sạch sẽ để

  1. loại bỏ bản sao/code dán
  2. xác định giá trị mặc định

Nếu bạn muốn xem một ví dụ, bạn có thể có một cái nhìn tại một số các build script Tôi viết cho các dự án sandbox của tôi.

+0

antlib là một thư viện rất có thể tái sử dụng, +1 – dfa

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