Scala 如何使用sbtosgi作为sbt发布任务的一部分生成osgi包

Scala 如何使用sbtosgi作为sbt发布任务的一部分生成osgi包,scala,osgi,sbt,Scala,Osgi,Sbt,我正在使用从使用bnd的sbt构建生成OSGi包。sbtosgi bundle提供用于生成bundle的osgi bundle任务。使用sbtosgi的默认配置,从sbt提示符运行osgibundle会更新JAR以包含正确的头,但是运行cleanpackage会导致JAR没有osgi头。用Maven的话说,我正在尝试使用Maven bundle插件,packaging=bundle——也就是说,项目的主要工件应该是一个OSGi包 基于对sbtosgi插件源代码的阅读,我认为osgi bundle

我正在使用从使用bnd的sbt构建生成OSGi包。sbtosgi bundle提供用于生成bundle的osgi bundle任务。使用sbtosgi的默认配置,从sbt提示符运行osgibundle会更新JAR以包含正确的头,但是运行cleanpackage会导致JAR没有osgi头。用Maven的话说,我正在尝试使用Maven bundle插件,packaging=bundle——也就是说,项目的主要工件应该是一个OSGi包

基于对sbtosgi插件源代码的阅读,我认为osgi bundle任务覆盖了packageBin创建的JAR。我尝试重写packageBin的定义,以便它使用osgi bundle任务而不是默认任务:

  packageBin in Compile <<= OsgiKeys.bundle

我是SBT的新手,我不知道从这里该去哪里。任何帮助都将不胜感激。

看起来我最初通过Twitter提出的建议不起作用。对不起。但幸运的是,马克·哈拉坐在我旁边,这里有一个可行的解决方案:

packagedArtifact in (Compile, packageBin) <<= (artifact in (Compile, packageBin), OsgiKeys.bundle).identityMap

artifact in (Compile, packageBin) ~= (_.copy(`type` = "bundle"))
packagedArtifact in(编译,packageBin)
packagedArtifact in (Compile, packageBin) <<= (artifact in (Compile, packageBin), OsgiKeys.bundle).identityMap

artifact in (Compile, packageBin) ~= (_.copy(`type` = "bundle"))