Sử dụng Maven, rất dễ dàng để tạo một gói OSGi từ bất kỳ thư viện nào. Tuy nhiên, tôi nghĩ kết quả tương tự cũng có thể được tạo ra với các cơ chế khác. Giải pháp Maven đã giúp tôi hiểu cách hoạt động của nó.
Tạo gói được thực hiện bằng cách tạo dự án có thư viện dưới dạng phụ thuộc và sau đó đóng gói dự án bằng cách sử dụng maven-bundle-plugin từ Apache Felix project và chỉ định gói thư viện với hướng dẫn Export-Package
. Tôi sử dụng này để chia sẻ Google Nghị định thư Buffers giữa bó bên trong một container OSGi:
<?xml version="1.0" encoding="UTF-8" ?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.lib</groupId>
<artifactId>protobuf-dist</artifactId>
<version>2.1.0</version>
<name>Google Protocol Buffers OSGi Distribution</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>com.google.protobuf</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
Nếu bạn muốn tất cả phụ thuộc bắc cầu lăn vào bó, quá, sử dụng các mục tiêu bundleall
của các plugin.
Plugin nhận dạng và tôn trọng các tệp kê khai OSGi hiện có trong phần phụ thuộc.
Bạn cũng có thể sử dụng plugin gói để chỉ tạo tệp kê khai và yêu cầu trình bao đóng gói jar
(hoặc lắp ráp jar-with-dependencies
) để sử dụng tệp kê khai đó thông qua phần lưu trữ. Trang của plugin được liên kết ở trên cho thấy cách thực hiện điều đó.
Nguồn
2009-08-05 19:06:45
Ngoài ra còn có các kho chứa phiên bản "osgi-ified" của nhiều thư viện phổ biến: SpringSource là một phiên bản lớn: http://www.springsource.com/repository/app/ – Thilo
cảm ơn liên kết! – basszero