【发布时间】:2019-06-28 11:47:42
【问题描述】:
我有一个用于 Scala 库的 SBT 项目。该实现分布在多个 SBT 子项目中,但我想将该库作为单个 JAR 发布。我构建了以下示例:
val subProject = project
val myLibrary = project
.in(file("."))
.dependsOn(subProject)
项目myLibrary 它是依赖于所有其他子项目的主项目。如果我运行sbt myLibrary/package,我会得到一个JAR 文件,其中只有类文件、源代码和项目myLibrary 中源代码的渲染文档。我找到了以下解决方法来包含其他子项目中的文件,方法是将以下设置添加到myLibrary:
val myLibrary = project
.in(file("."))
.dependsOn(subProject)
.settings(
Compile / packageBin / mappings ++= (subProject / Compile / packageBin / mappings).value,
Compile / packageSrc / mappings ++= (subProject / Compile / packageSrc / mappings).value,
Compile / packageDoc / mappings ++= (subProject / Compile / packageDoc / mappings).value)
产生相同结果的预期方法是什么?
【问题讨论】:
-
显然,鉴于没有人给出更好的解决方案,您的解决方案是最好的。但它与
packageDoc存在问题,由于映射中重复的“index.html”键而抱怨。至少在 sbt 1.4.4 中。你找到任何解决方案了吗? -
为了避免重复键错误,我猜
Compile / packageDoc / mappings ++= (subProject / Compile / packageDoc / mappings).value)应该替换为Compile / doc / sources ++= (subProject / Compile / doc / sources).value。