如何使用 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 视图中右键单击项目,然后在上下文菜单中选择 Configure
→ Add 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,如何添加非 OSGi JAR?使用普通 JAR 会破坏整个项目。缺少要求接线包
OSGi Felix 和 BndTools - 按名称加载类
osgi (bndtools) 中的 Restlet 包无法启动。激活程序错误 com/sun/net/httpserver/HttpHandler