使用Maven,从任何库创建OSGi包都非常容易。不过,我认为也可以用其他机制创造相同的结果。 Maven解决方案帮助我理解它是如何工作的。
创建包是通过创建具有图书馆作为一个依赖关系的项目,然后用包装从Apache Felix project的maven-bundle-plugin项目,并与Export-Package
指令指定库包完成。我用这束之间共享谷歌协议缓冲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>
如果希望所有传递依赖滚入束,也使用插件的bundleall
目标。
该插件可以识别并尊重依赖项中现有的OSGi清单。
您也可以使用bundle插件创建清单并告诉jar
打包插件(或内部程序集jar-with-dependencies
)通过存档部分使用该清单。上面链接的插件页面显示了如何做到这一点。
还有一些存储库,其中包含许多流行库的“osgi-ified”版本:SpringSource是一个很大的版本:http://www.springsource.com/repository/app/ – Thilo 2009-08-06 01:57:52
感谢您的链接! – basszero 2009-08-06 12:03:47