如何自动化bndtools构建

时间:2016-11-10 04:34:22

标签: osgi bndtools maven-bundle-plugin

我对OSGi世界相对较新,需要帮助来了解如何自动化我的构建过程。 我熟悉在Eclipse中使用bndtool,我学会了如何解决依赖关系,运行,测试,调试和生成一个独立的jar。我还浏览了OSGi官方网站上发布的基本和Maven教程。 我的问题是如何自动化我的构建!所以,让我们说我在SVN中有代码。我需要能够检查代码,然后运行构建脚本/工具来生成我的捆绑包,然后我可以使用Felix或Karaf进行部署。 官方Maven教程(使用OSGi enRoute)仅显示如何生成一个不是我感兴趣的独立jar;我需要生成包。 我读到了Maven Bundle Plugin,但我认为在使用它时,我将失去基于UI的bndtools在Eclipse中提供的所有奢侈品。 非常感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

如果您使用带有bndtools的maven构建,那么您确实会失去一些好处。我有一个使用maven构建的完整项目的示例。见osgi-chat。它使用bnd-maven-plugin来构建bundle,但你也可以使用maven-bundle-plugin。在这两种情况下,您都可以在eclipse中使用标准的m2e支持。然后Bndtools只参与解析束并创建可运行的jar。

我们在apache社区的许多项目中使用纯maven方法。这是在apache karaf上部署的经过验证的方法。如果你想部署到karaf那么bndtools将无济于事,因为它无法创建karaf功能。

如果你想要bndtools的所有IDE支持,那么使用带有bndtools工作空间(cnf dir)的本机bndtools构建,并使用它提供的gradle构建。

答案 1 :(得分:0)

Bndtools附带一个gradle插件,您可以使用它来导出可执行jar,但如果您只是运行构建,则jar将在每个项目的生成文件夹中可用。

您可以使用runbundles任务基于.bndrun文件导出包(这类似于生成可执行jar但只创建包含包的文件夹)

答案 2 :(得分:0)

作为一个长期的maven用户,也因为我打算使用karaf(jboss fuse)我遵循了Christian的建议并花了一些时间探索maven-bundle-plugin并计划探索bnd-maven-plugin 。 从关于bnd-maven-plugin的第一次阅读开始,我发现它比apache插件有一些优势(直接从bnd而不是pom获取指令;更快的更新与bnd更新并行)。关于这个插件我还需要了解一件事:哪个OSGi发布版本会为它生成捆绑包?根据官方网站的说法,我知道maven-bundle-plugin只为R4生成,这是一个限制。那么bnd-maven-plugin怎么样? 还有一个问题:哪些插件可用于生成karaf kars,是否可以与bnd-bundle-plugin结合使用? 非常感谢你的耐心等待!

答案 3 :(得分:0)

我花了一些时间探索bnd-maven-plugin。 这是我找到混合Eclipse,bnd-maven-plugin和bndtools的最好方法: 1.使用bndtools来解决需求,并在Eclipse中从框架内运行bundle。 2.使用bnd-maven-plugin构建bundle 3.使用'indexer'插件生成一个索引文件,用于bndtools的依赖项解析。 尽管此方法允许从Eclipse中运行bundle,但每次都需要“mvn install”,因为bndtools插件不知道如何从Eclipse工作区解析依赖项。此方法还使得无法在Eclipse中调试代码。还有更好的选择吗?

由于