几种OSGI bundle的打包方法及注意事项
前言:我相信做基于OSGI框架开发的朋友,对于OSGI的基本单元Bundle应该并不陌生,平时的开发中,做得最多事情就是bundle的开发和打包了,打包其实属于蛮重要的一个过程,为什么说他重要呢,其实打包的过程就是一个理清bundle依赖关系的过程,在对OSGI的学习和使用过程中,个人觉得最令人头痛的就是bundle之间的依赖关系,而且我到现在为止还没有找到一种比较好的工具能够很好的管理OSGI环境中的各个bundle的依赖关系。不过现在公司也有开始考虑做一些类似phpadmin,mysqladmin这样的基于web的管理工具来对bundle进行统一管理,在这之前,如何解决依赖关系,如何将bundle正确的打包出来并进行部署成了OSGI开发中的一个主要问题,而这篇文章中,我主要介绍目前我自己用过得几种打包方式,总结下经验,如果大家有更好的方法或者有不清楚的地方也可以提出来一起讨论~
<plugins> <plugin> <groupId>org.apache.felix.pluginsgroupId> <artifactId>maven-osgi-pluginartifactId> <extensions>trueextensions> <version>0.3.0version> <configuration> <manifestFile>resources/manifest.mfmanifestFile> <configuration> <plugin> <plugins> ?
<plugins> <plugin> <groupId>org.apache.felix.pluginsgroupId> <artifactId>maven-osgi-pluginartifactId> <extensions>trueextensions> <version>0.3.0version> <configuration> <osgiManifest> <bundleName>My OSGi ApplicationbundleName> <bundleDescription>An example bundle applicationbundleDescription> <bundleActivator>org.safehaus.bundle.ActivatorbundleActivator> <importPackage>org.osgi.service.logimportPackage> <bundleVendor>SafehausbundleVendor> <osgiManifest> <configuration> <plugin> <plugins> ?
<plugin> <groupId>org.apache.felixgroupId> <artifactId>maven-bundle-pluginartifactId> <extensions>trueextensions> <configuration> <instructions> <Bundle-Version> ${project.version} Bundle-Version> <Bundle-SymbolicName> $(replace;${project.artifactId};-;_);singleton:=true Bundle-SymbolicName> <_classpath>target/classes_classpath> <Export-Package> com.yourcompany.artifactId.*;version="${project.version}" <Export-Package> <Import-Package> org.springframework.test;resolution:=optional,* <Import-Package> <DynamicImport-Package>*DynamicImport-ackage> <_include> -target/classes/META-INF/details.bnd <_include> <Include-Resource> <Include-Resource> <instructions> <configuration> <plugin> ?
<plugin> <groupId>org.ops4j.pax.mavengroupId> <artifactId>maven-bundle-pluginartifactId> <extensions>trueextensions> <configuration> <instructions> <Bundle-Version> 这里是bundle的Version Bundle-Version> <Bundle-SymbolicName> 这里是Bundle-SymbolicName的配置 Bundle-SymbolicName> <_classpath> … _classpath> <Export-Package> … Export-Package> <Import-Package> … Import-Package> <Bundle-ClassPath> … Bundle-ClassPath> <Bundle-Activator> … Bundle-Activator> <DynamicImport-Package>*DynamicImport-Package> <_include> -target/classes/META-INF/details.bnd _include> instructions> configuration> plugin> ?
</u1:p><o:p></o:p>
看见没,在我们原来的环境中多了一个新建的这个