gpt4 book ai didi

scala - SBT 项目发布 2 个工件的惯用方式是什么?

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

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

为了尽可能保持灵 active ,我目前发布此类项目的计划是发布两个不同的 jar:一个包含纯字节码( native 二进制文件的引用留给最终用户)和一个 fat jar它还包含 native 库并自动提取它们。

为了生成一个 fat jar,我创建了一个名为 packageFat 的任务。本质上是复制任务 packageBin带有到 native 库的附加映射以及名称附加的后缀“-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 和一个 fat jar 的惯用方式是什么?

最佳答案

我会创建一个 multi project构建文件,其中包含将“普通”发布的核心子项目和将使用 JNI 发布的胖子项目,然后您可以使用两个不同的工件名称,例如 foo-corefoo-fat.

事实上,foo-fat 可以依赖foo-core,并且它自己的工件仅包含 JNI 内容。

关于scala - SBT 项目发布 2 个工件的惯用方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147657/

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