SBT项目发布2个工件的惯用方法是什么



我有一个项目,它使用SBT作为构建系统,并将Scala/Java和本地源代码与JNI相结合。

为了尽可能灵活,我目前发布此类项目的计划是发布两个不同的jar:一个包含纯字节码(本地二进制文件的引用由最终用户决定),另一个包含本地库并自动提取它们的胖jar。

为了生成一个fat jar,我创建了一个名为packageFat的任务,它本质上复制了任务packageBin,并添加了到本地库的额外映射和后缀"-fat"。

构建配置的相关部分可以在此处查看:https://github.com/jodersky/flow/blob/master/project/nativefat.scala

然而,有了这种配置,任何依赖于我的项目并希望包含fat jar的项目都必须以这种形式声明依赖项:

libraryDependencies += "<organization>" %% "<name>" % "<version>" artifacts Artifact("<name>-fat", "jar", "jar")

我知道使用JNI分发项目有点笨拙,但最后一个"%"之后的部分会使依赖关系变得非常麻烦。所以我的问题是:在SBT中,从一个项目中发布一个普通jar和一个胖jar的惯用方法是什么?

我会创建一个多项目构建文件,其中有一个核心子项目将"plain"发布,还有一个胖子项目将与JNI一起发布,然后可以使用两个不同的工件名称,如foo-corefoo-fat

事实上,foo-fat可以依赖于foo-core,并且它自己的工件只由JNI的东西组成。

相关内容

最新更新