SBT项目发布两件神器的惯用方式是什么?
我有一个使用SBT作为构建系统的项目,它将Scala / Java和本地源与JNI结合在一起。
为了尽可能保持灵活性,我目前发布这类项目的计划是发布两个不同的jar:一个包含纯字节码(引用本地二进制文件留给最终用户)和一个包含纯字节码的胖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和一个胖罐子的习惯用法是什么?
我将创建一个多项目构建文件,其核心子项目将被发布为“纯文本”,并将创建一个胖子项目,它将使用JNI进行发布,然后您可以使用两个不同的工件名称,如foo-core
和foo-fat
。
事实上, foo-fat
可能依赖于foo-core
,而它自己的工件只会包含JNI的东西。
上一篇: What is the idiomatic way for an SBT project to publish 2 artifacts?