如何使用 bndtools 通过 Scala 创建 OSGi 包?

Posted

技术标签:

【中文标题】如何使用 bndtools 通过 Scala 创建 OSGi 包?【英文标题】:How to use bndtools to create OSGi bundles with Scala? 【发布时间】:2015-11-25 20:53:41 【问题描述】:

我知道有 Scala 特定的工具来创建 OSGi 包,但我对 bndtools 很满意,我只是想将 Scala 与 Java 一起编写或代替 Java。

【问题讨论】:

【参考方案1】:

假设 bndtools 和 Scala IDE 安装在 eclipse 中(您可以在 Eclipse Marketplace 中找到它们。

像往常一样创建一个新的 Bndtools OSGi 项目(即从File 菜单中,选择New -> Bndtools OSGi Project) 为项目添加 Scala 特性:在 Package Explorer 视图中右键单击项目,然后在上下文菜单中选择 ConfigureAdd Scala Nature。 (见http://scala-ide.org/docs/user/faq.html

这就是 Eclipse 方面的全部内容,您现在可以添加 Scala 类,一切都将像使用 java 一样工作。

为确保命令行和 CI 服务器也能正常运行,还需要执行更多步骤。

在文件build.gradle 中添加以下行: apply plugin: 'scala' 到文件gradle.properties 添加:scara.srcDirs=[projectDir/src]

更新:

以上内容还不够,必须将额外的 build.bnd 文件添加到任何包含 scala 文件的子模块中。以下内容并不优雅,因为它复制了 bnd 文件中已经存在的依赖项,但到目前为止我找到的唯一解决方案是:https://github.com/fusepoolP3/p3-entry-resource/blob/0df0bc35311c8a361f95d8e72f91c5e0df929245/build.gradle

【讨论】:

@evandor:我已将链接更改为指向文件的旧版本 出于调试目的——在另一个项目中使用你的 scala jar 作为依赖项时——你可能还想把它添加到你的 bnd 文件中:-includeresource: OSGI-OPT/src=src/ 这将将 scala 源添加到您的包中,否则会被忽略。

以上是关于如何使用 bndtools 通过 Scala 创建 OSGi 包?的主要内容,如果未能解决你的问题,请参考以下文章

如何替换 BndTools 默认启动器并更改导出文件结构

BndTools,如何添加非 OSGi JAR?使用普通 JAR 会破坏整个项目。缺少要求接线包

BndTools,如何添加非 OSGi JAR?

OSGi Felix 和 BndTools - 按名称加载类

osgi (bndtools) 中的 Restlet 包无法启动。激活程序错误 com/sun/net/httpserver/HttpHandler

使用 Maven、OSGi 和 Bndtools