Tôi đang sử dụng OSGi cho dự án mới nhất của mình tại nơi làm việc và nó khá đẹp về mặt mô đun và chức năng.Quy trình phát triển OSGi hợp lý là gì?
Nhưng tôi không hài lòng với quy trình phát triển. Cuối cùng, tôi dự định có 30-50 gói riêng biệt, được sắp xếp theo đồ thị phụ thuộc - được cho là, đây là những gì OSGi được thiết kế cho. Nhưng tôi không thể tìm ra một cách rõ ràng để quản lý các phụ thuộc tại thời điểm biên dịch.
Ví dụ: Bạn có các gói A và B. B phụ thuộc vào các gói được xác định trong A. Mỗi gói được phát triển dưới dạng một dự án Java riêng biệt.
Để biên dịch B, A phải nằm trên đường dẫn lớp javac.
Bạn:
- tham khảo vị trí hệ thống tập tin của dự án A trong xây dựng kịch bản của B?
- Xây dựng A và ném lọ vào thư mục lib của B?
- Dựa trên tính năng "dự án được tham chiếu" của Eclipse và luôn sử dụng đường dẫn lớp của Eclipse để xây dựng (ugh)
- Sử dụng thư mục "lib" chung cho tất cả các dự án và đổ các gói đó ra sau khi biên dịch?
- Thiết lập kho lưu trữ gói, phân tích tệp kê khai từ tập lệnh xây dựng và kéo xuống các gói yêu cầu từ kho lưu trữ?
No. 5 có vẻ sạch sẽ nhất, nhưng cũng giống như rất nhiều chi phí.
Phụ thuộc nhị phân là những điều nguy hiểm để đề xuất. Tôi đã giúp một khách hàng tuần trước gỡ lỗi một vấn đề bộ nạp lớp gây ra bởi có 2 bản sao của cùng một nhị phân jar trong 2 bó khác nhau. Khi họ đã cố gắng để vượt qua các trường hợp của các đối tượng từ các bình nhị phân từ một bó khác có ngoại lệ lớp đúc. Tốt hơn hết là sử dụng các câu lệnh gói nhập/xuất như chúng đã định. Trong trường hợp của khách hàng, giải pháp là tạo một gói từ bình nhị phân đã xuất các gói được yêu cầu. Sau đó, cả hai gói khách hàng đã nhập các gói mà họ cần từ gói mới. –
Hm. Tôi đã hy vọng tránh Mavenizing toàn bộ dự án, nhưng tôi có thể không tránh được nó. – levand
Bạn có theo dõi câu hỏi này không, bạn đã xử lý như thế nào? Tôi có một vấn đề rất tương tự mà tôi đã giải quyết thông qua việc phát minh lại bánh xe Maven. Phải mất rất nhiều công sức để tránh sử dụng Maven sau đó cuối cùng tôi đã kết thúc với một giải pháp mà là một tập hợp con của Maven mà cuối cùng tôi sẽ phải chuyển đổi sang Maven. Các phụ thuộc dự án càng phức tạp, càng có nhiều lợi ích mà Maven cung cấp đến từ một người thực sự không thích sự phức tạp của nó). – Chris