使用 SBT 处理库中的非托管类路径 jar,以便依赖项目可以访问它们

And*_*lay 5 dependencies packaging jar sbt

我正在编写一个依赖于代码(让我们称之为foo.jar)的库,它只能作为二进制 jar 使用。按照标准,我将它放在lib/目录中,以便 SBT 将其视为非托管依赖项。到目前为止这很好。

但是,由于这是一个库,我希望能够发布它,以便依赖它的其他项目也可以访问非托管代码,foo.jar而无需手动定位它。我最初认为我可以使用诸如SBT Assembly 之类的胖 jar 插件来创建具有依赖项的 jar,但这并不影响实际发布的内容sbt publish-local——它只会在您运行sbt assembly. 有没有一些标准的简单方法来处理这个问题?对于每个使用非托管依赖项在下游其他项目使用时中断的库来说,这似乎是一个坏主意,所以我想知道我是否遗漏了一些明显的东西。

Eug*_*ota 4

我不知道这是否是 sbt-assemble 的一个很好的用途,因为其他库可能依赖于不同版本的foo.jar等。

解决这个问题的一种方法是foo.jar自己在 Maven 存储库中发布。Scala 和/或 sbt 社区中的一些人一直在谈论bintray。它仍处于测试阶段,但如果您想发布一些罐子,看起来很有希望。