首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Maven为OSGi“包装”jars的好方法

用Maven为OSGi“包装”jars的好方法
EN

Stack Overflow用户
提问于 2010-12-30 18:48:51
回答 4查看 7.4K关注 0票数 5

例如,我在OPS4J上查看PAX工具:这一个和我认为我找到了一种很好的方法:

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

事实证明,我错了-看起来不是PAX做的。(RTFM,对吗?:)

但这让我纳闷:有什么东西能满足我的要求吗?

我曾经想过,也许我可以通过创建一个简单的POM并使用maven-bundle插件来做到这一点,但对于我所要求的内容来说,这似乎有点麻烦。

注意:我知道嵌入和组装jar并不是真正的“OSGi方式”--所以我不会这么做,除非我真的觉得它有用。比如春天。

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-31 21:23:33

你必须维持一个当地的POM才能完成这个任务。没有一个实用程序可以接受库/ jar,并在jar中显示适当的OSGi清单。ServiceMix和Spring已经捆绑了很多东西,可以作为示例使用。我建议看看两个这样的例子:

  • 公野 -简单的库包装器
  • OpenJPA -包装主jar并引入依赖项。
票数 4
EN

Stack Overflow用户

发布于 2011-03-18 03:59:49

我编写了一个maven原型,它将帮助您将一个jar包装成一个OSGI包。

假设您想包装collections版本3.2.1

首先获取原型并安装它

代码语言:javascript
复制
git clone git://github.com/HallwayTech/maven-wrap-jar-archetype.git 
cd maven-wrap-jar-archetype
maven install

然后使用原型启动项目。

代码语言:javascript
复制
mvn archetype:create \
  -DarchetypeGroupId=com.hallwaytech.osgi \
  -DarchetypeArtifactId=wrap-jar \
  -DarchetypeVersion=1.0-SNAPSHOT \
  -DgroupId=commons-collections \
  -DartifactId=commons-collections \
  -Dversion=3.2.1

光盘共用-收藏

代码语言:javascript
复制
mvn install

要部署到Felix内部的Apache Sling,请运行:

代码语言:javascript
复制
mvn install -Pdeploy
票数 8
EN

Stack Overflow用户

发布于 2010-12-31 13:47:05

我们所做的事情与你所描述的相似。例如,我们有一个内部版本的Apache QPid。它作为6罐(客户端,核心,普通,支持等),你很少单独使用。我们有一个带有BND的POM,它拿走了所有的jar,并从它们那里制造了一个uber-osgi-jar。

步骤:

  1. 声明您的依赖项(我们有jars,所以我们将它们声明为系统dep)。
  2. 导入构建插件maven-bundle-plugin (2.1.0)
  3. 为导出、私有和导入包设置正确的说明
  4. 在“包”阶段执行“包装”目标
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4565327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档