我正在使用maven(maven-bundle-plugin)和apache karaf在osgi bundle开发中迈出第一步。 我的问题是:我如何导入另一个包的包?使用maven bundle插件进行osgi开发并设置依赖关系
如果我有两个捆绑包A和B. 可以说捆绑包A导出一个包“package.from.bundle.A”。 这我可以捆绑项目的pom.xml声明:
...
<instructions>
...
<Export-Package>
package.from.bundle.A*;version=${project.version}
</Export-Package>
<Import-Package>
*
</Import-Package>
</instructions>
...
但我怎么能声明,我想使用包捆B? 如果我只是写项目B的POM文件的进口包装标签之间的软件包名,这也不行......
...
<instructions>
...
<Export-Package>
</Export-Package>
<Import-Package>
package.from.bundle.A
</Import-Package>
</instructions>
...
如何行家从哪个包项目这个包是关系到知道吗?我如何使用maven在我的bundle之间使用依赖关系?
谢谢
是的,但问题是,当我想要构建我的包(使用mvn安装)时,我最终得到一个构建失败说:未分解的引用[org.osgi.framework]由Bundle-类路径。在配置包中找到错误。当我参考上面的标签中显示的package“package.from.bundle.A”时,会发生这种情况,这对我来说似乎合乎逻辑,因为maven怎么知道在哪里找到这个包?我想我做的是完全错误的...... –
Moonlit
2012-07-14 08:09:26
你没有提到你的原始问题中的构建失败。 :) 你肯定不需要元素,因为它默认为*,它会导入你的包使用的所有包。清单在编译后生成,所以如果你有编译错误,那么这与你的配置中的内容有关。 听起来好像你需要依赖org.osgi.core来解决编译问题。 –
2012-07-14 12:13:39
thanx的回复,我看了看,org.osgi.core依赖关系存在...但我想我找到了错误。是否真的有必要为另一个bundle设置maven dependency ...因此,如果bundle A依赖于bundle B,我还必须向bundle A的maven项目声明一个Maven依赖项(在B的pom.xml中)?如果我这样做,我不会在我做maven安装时遇到错误。 – Moonlit 2012-07-14 12:51:03