使用Maven为OSGi"包装"罐子的好方法

jav*_*y79 5 java osgi maven

我在OPS4J上看过PAX工具,例如:这个,我想我找到了一个很好的方法:

  • 指定工件
  • 从该jar及其传递依赖项创建一个已组装的jar(包含所有依赖项的jar)
  • 用BND包装它来创建一个OSGi包

事实证明,我错了 - 似乎PAX的东西没有这样做.(RTFM,对吧?:))

但是这让我感到疑惑:那里有什么能满足我的要求吗?

我想也许我可以通过创建一个简单的POM并使用maven-bundle-plugin来做到这一点,但这似乎对我所要求的东西来说可能有点麻烦.

注意:我得到嵌入和组装jar不是真正的"OSGi方式" - 所以我不会这样做,除非我真的认为它有用.例如 - 春天.

提前致谢.

小智 8

我写了一个maven原型,它可以帮助你将jar包装成OSGI包.

假设您想要包含commons-collections版本3.2.1

首先获取原型并安装它

git clone git://github.com/HallwayTech/maven-wrap-jar-archetype.git 
cd maven-wrap-jar-archetype
maven install
Run Code Online (Sandbox Code Playgroud)

然后使用原型启动项目.

mvn archetype:create \
  -DarchetypeGroupId=com.hallwaytech.osgi \
  -DarchetypeArtifactId=wrap-jar \
  -DarchetypeVersion=1.0-SNAPSHOT \
  -DgroupId=commons-collections \
  -DartifactId=commons-collections \
  -Dversion=3.2.1
Run Code Online (Sandbox Code Playgroud)

cd commons-collections

mvn install
Run Code Online (Sandbox Code Playgroud)

要在Felix运行中部署到Apache Sling:

mvn install -Pdeploy
Run Code Online (Sandbox Code Playgroud)


Car*_*arl 4

您必须维护本地 POM 才能完成此任务。没有一个实用程序可以接收库/jar 并在 jar 中吐出适当的 OSGi MANIFEST。ServiceMix 与 Spring 一起捆绑了很多东西,您可以将其用作示例。我建议查看的两个这样的例子是: