bố trí Repository cho Maven lớn các dự án


13

Tôi có một ứng dụng lớn (~ 50 module) sử dụng một cấu trúc tương tự như sau:

  • Application
    • Communication module
      • Màu mô-đun giao tiếp
      • Mô-đun giao tiếp SSN
      • vv mô-đun truyền thông
    • Router mô-đun
    • module Dịch vụ
      • dịch vụ bỏ phiếu mô-đun
        • giao diện Web submodule cho bỏ phiếu
        • Vote thu submodule cho bỏ phiếu
        • vv để bỏ phiếu
      • quiz mô-đun dịch vụ
      • , vv mô-đun

Tôi muốn nhập khẩu các ứng dụng để Maven và Subversion. Sau một số nghiên cứu tôi thấy rằng hai phương pháp tiếp cận thực tế tồn tại cho điều này.

Một người đang sử dụng cấu trúc cây giống như hình trước. Hạn chế của cấu trúc này là bạn cần một tấn tinh chỉnh/hack để có được báo cáo đa mô-đun hoạt động tốt với Maven. Một nhược điểm nữa là ở Subversion, cách tiếp cận trunk/tags/branch tiêu chuẩn thêm độ phức tạp hơn vào kho lưu trữ.

Cách tiếp cận khác sử dụng cấu trúc phẳng, nơi chỉ có một dự án chính và tất cả các mô-đun, mô-đun con và các phần của mô-đun con là con trực tiếp của dự án mẹ. Cách tiếp cận này hoạt động tốt để báo cáo và dễ dàng hơn trong Subversion, tuy nhiên tôi cảm thấy tôi mất một chút về cấu trúc theo cách này.

Bạn sẽ chọn cách nào trong thời gian dài và tại sao?

14

Chúng tôi có một ứng dụng rộng lớn (160+ gói OSGi trong đó mỗi gói là một mô-đun Maven) và bài học chúng tôi đã học và tiếp tục tìm hiểu, đó là căn hộ tốt hơn. Vấn đề với việc mã hóa ngữ nghĩa trong hệ thống phân cấp của bạn là bạn mất tính linh hoạt. Một mô-đun 100% nói rằng "giao tiếp" ngày nay có thể là một phần "dịch vụ" vào ngày mai và sau đó bạn sẽ cần phải di chuyển mọi thứ trong kho lưu trữ của mình và phá vỡ tất cả các loại tập lệnh, tài liệu, tham chiếu, v.v.

Vì vậy, tôi muốn giới thiệu một cấu trúc phẳng và mã hóa ngữ nghĩa ở một nơi khác (ví dụ như một không gian làm việc hoặc tài liệu IDE).

Tôi đã trả lời câu hỏi về bố cục kiểm soát phiên bản trong một số chi tiết with examples at another question, nó có thể liên quan đến tình huống của bạn.


3

Tôi nghĩ bạn nên làm phẳng cấu trúc thư mục của mình. Có lẽ bạn muốn đưa ra một quy ước đặt tên cho các thư mục như vậy mà chúng sắp xếp độc đáo khi xem tất cả các dự án, nhưng cuối cùng tôi không nghĩ rằng tất cả các thứ bậc bổ sung đó là cần thiết.

Giả sử bạn đang sử dụng Eclipse làm IDE của bạn, tất cả các dự án sẽ kết thúc trong danh sách phẳng khi bạn nhập chúng, vì vậy bạn không thực sự nhận được bất kỳ thứ gì từ các thư mục phụ bổ sung. Điều đó ngoài thực tế là cấu hình đơn giản hơn rất nhiều mà không có tất cả các hệ thống phân cấp phụ làm cho sự lựa chọn khá rõ ràng trong tâm trí của tôi.

Bạn cũng có thể cân nhắc kết hợp một số mô-đun. Tôi không biết gì về ứng dụng hoặc miền của bạn, nhưng có vẻ như rất nhiều mô-đun cấp lá có thể phù hợp hơn với chỉ các gói hoặc bộ gói bên trong một mô-đun cấp cao nhất khác. Tôi là tất cả để giữ lọ cố kết, nhưng nó có thể được thực hiện quá xa đôi khi.