2008-08-26 42 views
11

Chúng tôi đã nhúng thời gian chạy OSGi (Equinox) vào ứng dụng khách-máy chủ tùy chỉnh để tạo điều kiện phát triển plugin và cho đến nay mọi thứ đang diễn ra tuyệt vời. Chúng tôi đã sử dụng Eclipse để xây dựng các plugin do trình soạn thảo tệp kê khai, quản lý phụ thuộc và trình hướng dẫn xuất được tích hợp sẵn. Sử dụng Eclipse để quản lý các bản xây dựng không phải là rất thuận lợi cho việc tích hợp liên tục thông qua Hudson.Tôi làm cách nào để quản lý các phụ thuộc xây dựng OSGi?

Chúng tôi có gói OSGi phụ thuộc vào các gói OSGi khác. Tôi thực sự ghét để hardcode xây dựng trật tự trong một xây dựng ANT tùy chỉnh. Chúng tôi đã làm điều này là quá khứ và nó khá khủng khiếp. Có công cụ xây dựng nào có thể DỄ DÀNG quản lý phụ thuộc OSGi, nếu không tự động giải quyết chúng? Có bất kỳ ví dụ DECENT nào về cách này không?

CLARIFICATION:

Tập lệnh xây dựng được tạo chỉ có thể sử dụng được thông qua Eclipse. Chúng yêu cầu chạy các phần của Eclipse theo cách thủ công. Chúng tôi cũng có một số mục tiêu chuẩn mà bản xây dựng Eclipse không có, và tôi không muốn sửa đổi tệp đã tạo vì tôi có thể tạo lại (tôi biết mình có thể bao gồm, nhưng tôi muốn tránh tệp gen Eclipse tất cả với nhau)

Dưới đây là cách bố trí dự án của tôi:

/ 
-PluginA 
-PluginB 
-PluginC 
. 
. 
. 

Trong việc sử dụng PDE Eclipse, mỗi plugin có Manifest, nhưng không có build.xml như PDE nào đó cho tôi. Khó để tự động hóa một quá trình gui điều khiển w/Hudson. Tôi muốn thiết lập build.xml của riêng mình để xây dựng mỗi, NHƯNG có các phụ thuộc và các vấn đề về trật tự xây dựng. Những vấn đề này được thúc đẩy bởi các tệp kê khai (mô tả các nhập khẩu OSGi). Ví dụ, PluginC phụ thuộc vào PluginB phụ thuộc vào PluginA. Chúng phải được xây dựng theo thứ tự đúng. Tôi nhận ra rằng tôi có thể tự điều khiển thứ tự xây dựng, tôi đang tìm kiếm một công cụ để giúp tự động hóa việc quản lý phụ thuộc thứ tự xây dựng.

+0

Tại sao Dịch vụ tuyên ngôn không hoạt động? – drozzy

Trả lời

1

Kết thúc một số câu hỏi cũ ...

Thiết lập của chúng tôi không có lợi cho maven do thiếu kết nối mạng và thời gian. Tôi biết có các thiết lập maven ngoại tuyến, nhưng tất cả đã quá nhiều thời gian. Hy vọng rằng chúng tôi sẽ sử dụng một thiết lập thích hợp khi chúng tôi có thời gian để tổ chức lại quá trình xây dựng.

Giải pháp liên quan đến Ant, BND và một số tác vụ kiến ​​tùy chỉnh. Các gói phụ thuộc khác nhau được quản lý theo cách thủ công. Chúng tôi đã sử dụng Ant; BND và nhiệm vụ tùy chỉnh gắn tất cả lại với nhau. Các nhiệm vụ tùy chỉnh chỉ đảm bảo các dự án bnd/eclipse của chúng tôi được đồng bộ hóa.

2

Chúng tôi sử dụng Buckminster. Đó là một khung công tác xây dựng và lắp ráp, đảm nhiệm độ phân giải của các phụ thuộc, tìm nạp từ các kho lưu trữ khác nhau, xây dựng và đóng gói sản phẩm.

Đây là dự án Công cụ Eclipse. Nó tích hợp tốt với PDE.

Điều này có nghĩa là tất cả siêu dữ liệu mà chúng tôi sử dụng để xây dựng RCP đều hữu ích đối với Buckminster để giải quyết và xây dựng. Ví dụ, feature.xml và tiêu đề Require-Bundle trong Manifest.MF, .product.

Hiện tại, chúng tôi chưa có bất kỳ tập lệnh xây dựng nào trong mỗi gói; bây giờ chúng tôi có một bản dựng cho mỗi sản phẩm. Buckminster chăm sóc bước đi biểu đồ phụ thuộc.

Phải mất một chút nỗ lực để có hệ thống kiểm soát hành trình/kiến ​​hiện tại của chúng tôi làm việc với nó, mặc dù họ (nhóm Buckminster) đã bắt đầu sử dụng Hudson để lưu trữ dự án. Tôi tin rằng thiết lập bản dựng của họ cũng có sẵn để tải xuống.

Chúng tôi thực sự ấn tượng với nó, mặc dù nó tương đối trẻ sơ sinh.

Chúng tôi cũng xem xét Pax-Construct nhưng chúng tôi không muốn sử dụng Maven.

Chúng tôi hiện cũng đang xem xét Spring DM testing framework để tăng cường nỗ lực kiểm tra đơn vị.

7

Maven2 tất cả các cách; có một plugin Eclipse được gọi là m2eclipse để giúp quản lý nó, giải quyết chính xác vấn đề phụ thuộc và sau đó một số. Có free online book as documentation.

Cụ thể xem multi-module projects để gộp nhiều thành phần lại với nhau và yêu cầu Maven thực hiện thứ tự xây dựng và phụ thuộc.

Ngoài ra còn có chapter on the Eclipse integration.

Và đó chỉ là Eclipse và Maven, sau khi bạn nhận được một số goodies mát mẻ cho OSGi:

  • Các Apache Felix BND Maven plugin sẽ tự động tạo biểu hiện của bạn hoặc ít nhất giúp bạn
  • Các PAX OPS4J project và Maven của họ các plugin có thể là trợ giúp tuyệt vời trong các dự án khởi động, cung cấp các trình khởi chạy, v.v.

Và về cơ bản, mô hình mô-đun Maven phù hợp hoàn hảo với mô hình gói của OSGi. Chúng tôi đã xây dựng và quản lý nhiều sản phẩm với hàng trăm gói sử dụng Maven trong hơn 3 năm nay và thật tuyệt vời.

0

Bạn có thể giải thích rõ vấn đề xảy ra ở đâu không? Bạn đề cập đến phụ thuộc gói OSGi. Đây có phải là trong thời gian chạy không? Hoặc trong thời gian biên dịch? Trong trường hợp đầu tiên bạn nên xem xét các dịch vụ khai báo (xem OSGi Spec).

0

Chúng tôi sử dụng Hudson kết hợp với PluginBuilder để tạo các gói/plugin OSGi dựa trên Eclipse của chúng tôi. Điều này xây dựng dựa trên quy trình PDE chuẩn của Eclipse để xây dựng các plugin. Điều này có nghĩa là sử dụng Eclipse làm trình biên dịch.

2

Seconding Maven2. Nhìn vào các plugin Tycho để xây dựng - họ sử dụng trình biên dịch JDT của Eclipse để nó thực hiện tất cả các quy tắc OSGi tại thời gian biên dịch, giống như cách Eclipse thực hiện khi chạy.

Ngoài ra, các plugin Apache BND của Apache cũng có vẻ phổ biến. Tôi thích Tycho vì nó gần gũi hơn dường như hợp nhất môi trường phát triển Maven và Eclipse.

1

PDE Xây dựng không đầu. Nó được tài liệu hóa bởi Eclipse. Nếu bạn đang xây dựng các trình bổ sung Eclipse, và bạn muốn thực hiện nó thông qua dòng lệnh, thì bản xây dựng không đầu của PDE của Eclipse là cách để đi.

0

tôi sử dụng maven 3.0.2

mvn generate: nguyên mẫu

select 252 - osgi-archetype 
mvn idea:idea 

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

để thêm phụ thuộc vào việc sử dụng bó dụ ngắn này trong pom.xml

<Export-Package>org.foo.myproject.api</Export-Package> 

hoặc

<Import-Package>org.foo.myproject.api</Import-Package> 
0

Maven không yêu cầu kết nối internet! Sử dụng công tắc -o, vì Chúa.

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