gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:01:35 24 4
gpt4 key购买 nike

我正在使用sbtosgi plugin使用 bnd 从 sbt 构建生成 OSGi 包。 sbtosgi 包提供了用于生成包的osgi-bundle 任务。使用 sbtosgi 的默认配置,从 sbt 提示符运行 osgi-bundle 会更新 JAR 以包含正确的 header ,但运行 clean package 会生成没有 OSGi header 的 JAR。用 Maven 的话说,我试图做相当于使用 maven-bundle-plugin 和 Packaging = Bundle 的事情——即,项目的主要工件应该是一个 OSGi 包。

根据阅读 sbtosgi 插件的源代码,在我看来,osgi-bundle 任务会覆盖 packageBin 创建的 JAR。我尝试覆盖 packageBin 的定义,以便它使用 osgi-bundle 任务而不是默认任务:

  packageBin in Compile <<= OsgiKeys.bundle

这导致了循环引用:

[error] Cyclic reference involving 
[error] {file:project/*:osgi-bundle
[error] {file:project/compile:full-classpath
[error] {file:project/compile:exported-products
[error] {file:project/compile:package-bin

我对 SBT 还很陌生,我不知道接下来该去哪里。任何帮助将不胜感激。

最佳答案

看起来我通过 Twitter 提出的您使用的最初建议不起作用。对此感到抱歉。但幸运的是,马克·哈拉 (Mark Harrah) 坐在我旁边,这是一个可行的解决方案:

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

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

关于scala - 如何使用 sbtosgi 生成 osgi 包作为 sbt 发布任务的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com