【问题标题】:Why is sbt-osgi adding Include-Resource directives to my MANIFEST.MF?为什么 sbt-osgi 将 Include-Resource 指令添加到我的 MANIFEST.MF?
【发布时间】:2013-10-03 21:33:47
【问题描述】:

我配置了一个 sbt 项目(通过build.sbt)来生成 OSGI 包(使用 sbt-osgi 插件)。

由于某种原因,生成的 MANIFEST.MF 包含一个 Include-Resource 指令,指向我的构建目录中的(完全为空的)“资源”子目录(特别是 src/main/resourcestarget/scala_2.10/resource_managed/main),尽管我没有做任何事情来告诉它这样做(我绝对不希望我的工件指向我的主目录中的位置)。

为什么 sbt-osgi 会这样做,更重要的是,我怎样才能让它停止?

我的build.sbt可以在这里找到:https://github.com/reggert/reb4s/blob/1cd91fb82aa978b2f202c618ca6403a66c15f8d7/build.sbt

【问题讨论】:

    标签: scala sbt osgi-bundle bnd


    【解决方案1】:

    自从我使用 OSGI 插件以来已经有几个月了,但我想我可以回忆起足够的东西来让你走上正轨。首先,请注意是BND 在这里完成了所有艰苦的工作。 sbt 插件只是一个包装器。关于Include-Resource 标头有一些讨论。我相信您可以将此标头设置为None 或使用插件的additionalHeaders 设置的空字符串。

    【讨论】:

    • 我尝试添加这一行:OsgiKeys.additionalHeaders := Map("Include-Resource" -> ""),但没有明显效果。
    • 这似乎是 sbt-osgi 中的一个错误。 “Include-Resource”不是合法的 OSGi MANIFEST 标头。这是一个 BND 配置参数。不过,不知何故,它被设置为 OSGi 标头。
    • 我刚刚确认这是一个错误,可以通过对 sbt-osgi 源代码进行一个字符的更改来修复它! :-D
    • 太棒了!给他们一个拉取请求,让我们免去未来的头痛 :)
    • 大家好。仅供参考。六个月前我写了 OSGi 插件。它也允许通过 BND 和 OBR 生成清单以及通过 Tycho API 解析 P2 依赖项。它对公众来说还不够成熟,但对于这个消息来说足够稳定。位于github.com/digimead/sbt-osgi-manager 示例在 src/sbt-test 和其他项目中,例如 github.com/digimead/digi-TABuddy-model/blob/master/build.sbt 希望它对某人有用。
    猜你喜欢
    • 2012-02-19
    • 2016-12-25
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多