2012-02-16 20 views
10

Tôi có một bộ OSGi bó được xây dựng sử dụng Maven và tôi đã tự hỏi nếu có một plugin Maven có sẵn cho phép tôi làm như sau:Tạo một ứng dụng OSGi hoàn chỉnh với Felix & Maven

  1. Xác định thiết lập các gói để bao gồm trong một phân phối và/hoặc chỉ định một gói duy nhất và có các phụ thuộc được giải quyết.
  2. Tạo bản phân phối hoàn chỉnh khung. Những gì tôi có nghĩa là một tập tin zip duy nhất có chứa tất cả các bó cần thiết, cộng với cấu trúc thư mục chính xác cho felix để người dùng chỉ đơn giản có thể giải nén tập tin và gõ "java -jar bin/felix.jar".

Tôi đã làm một số Googling và tôi không tìm thấy bất cứ điều gì rất hứa hẹn ngoài việc appassembler. Có ai trong số các bạn từng nghĩ ra một giải pháp tốt không?

Cập nhật Đây là minh chứng cho những gì tôi đang cố gắng hoàn thành.

example-parent\ 
       bundle-one 
       bundle-two 
       bundle-three 
       assembly-one 
       assembly-two 

đâu assembly-one sẽ bao gồm bundle-onebundle-twoassembly-two sẽ bao gồm bundle-twobundle-three hoặc bất kỳ sự kết hợp. Sau đó, khi bạn xây dựng dự án của mình, bạn sẽ nhận được hai tệp zip, một tệp cho assembly-one và một cho assembly-two có chứa các gói thích hợp trong cài đặt felix tự chứa. Ví dụ:

assembly-one.zip\ 
       bin\felix.jar 
       bundle\bundle-one, bundle-two, plus bare min felix bundles 
       conf\any configuration files I need 

Hy vọng rằng sẽ cung cấp thêm một chút thông tin về những gì tôi đang cố gắng hoàn thành. Tôi đoán đây là loại tương tự như cách Eclipse thực hiện một feature.xml, nhưng tất nhiên là không sử dụng Eclipse.

Trả lời

3

Đề xuất của Fred về việc sử dụng plugin lắp ráp để đóng gói bản phân phối độc lập có thể được nén lên là một bản phân phối tốt. Nếu bạn đang tìm kiếm một ví dụ về cách các tệp xây dựng cho công việc này sẽ hoạt động như thế nào, nguồn mẫu blog Apache Aries sử dụng gói maven và các plugin lắp ráp.

Cách tiếp cận khác là tạo các tạo tác ứng dụng. Không có một tiêu chuẩn OSGi duy nhất cho điều này (chưa), nhưng một số dự án cung cấp một cách nhóm các nhóm lại với nhau thành các gói siêu. Điều này không hoàn toàn giống như những gì bạn mô tả với các assembly của bạn, vì khung công tác OSGi không được bao gồm, nhưng nó tương tự như các tệp feature.xml của Eclipse. Có một cái nhìn tại Apache Aries eba (lưu trữ gói doanh nghiệp), các tập tin kế hoạch Xử Nữ, hoặc các tính năng của Karaf. Trong hầu hết các gói này, bạn sẽ nhận được một tệp lưu trữ bao gồm một số gói và/hoặc tệp siêu dữ liệu mô tả nội dung ứng dụng. Các gói không có trong kho lưu trữ có thể được cung cấp từ kho lưu trữ. Đối với Aries, đó cũng là một bao bì mba eba mà sẽ tạo ra kho lưu trữ .eba chứa tệp APPLICATION.MF và các gói kèm theo.

Chúng tôi đã có thêm một chút về điều này trong Chương 4 của Doanh nghiệp OSGi trong hành động (http://www.manning.com/enterpriseosgiinaction), hoặc google nhanh cho eba, Kế hoạch xử lý hoặc tính năng karaf sẽ tìm thấy bạn nhiều hơn nữa. Nhược điểm cho trường hợp sử dụng của bạn là các ứng dụng sẽ cần phải được triển khai vào một thời gian chạy với công nghệ thích hợp được cài đặt sẵn vào nó, vì không có ứng dụng nào là OSGi lõi.

Một dự án khác để xem xét để triển khai dễ dàng hơn là cài đặt tệp Felix. Điều này cho phép bạn thả các bó vào một thư mục được giám sát, điều này giúp tiết kiệm phải ghi các tệp cấu hình.

2

Có lẽ điều này có thể giúp ích cho những gì bạn đang cố gắng hoàn thành?

Tôi không biết chắc chắn nhưng có lẽ nó đáng để quay?

http://maven.apache.org/plugins/maven-assembly-plugin/

Cũng có lẽ là sau ?:

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

Nó sẽ đòi hỏi một chút đọc/nghiên cứu nhưng tôi nghĩ rằng nó có thể có ích. Nếu không thì có lẽ tôi không hiểu chính xác mục tiêu của bạn và tôi xin lỗi.

6

Plugin Launchpad Sling [1] tạo tệp jar có thể chạy được hoặc tệp chiến dịch nhúng khung OSGi và danh sách gói có thể tùy chỉnh, đó có thể là những gì bạn cần. Với điều đó bạn thậm chí không phải giải nén tập tin jar đã tạo ra, chỉ cần bắt đầu nó là đủ.

[1] http://sling.apache.org/site/maven-launchpad-plugin.html

0

Nếu bạn đang sử dụng OSGi v4 + và xây dựng với Maven, sử dụng pax-ops4j. Nó rất thuận tiện để sử dụng và làm cho việc phát triển OSGi trở nên dễ dàng.

+4

Bạn có thể giải thích thêm về cách bạn muốn đóng gói toàn bộ ứng dụng OSGi ngoài việc nói "sử dụng pax-ops4j" không? – oconnor0