将带有子项目的 SBT 项目作为单个 Maven 工件发布

Feu*_*mel 6 scala jar sbt

我有一个 Scala 库的 SBT 项目。该实现分布在多个 SBT 子项目中,但我想将该库作为单个 JAR 发布。我构建了以下示例:

val subProject = project

val myLibrary = project
  .in(file("."))
  .dependsOn(subProject)
Run Code Online (Sandbox Code Playgroud)

该项目myLibrary是主要项目,它依赖于所有其他子项目。如果我运行sbt myLibrary/package,我会得到一个 JAR 文件,其中包含 project 中源的类文件、源和呈现的文档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)
Run Code Online (Sandbox Code Playgroud)

产生相同结果的预期方法是什么?

Pri*_*dam -1

您可以查看sbt-assemble插件,它会创建项目的 fat jar(包括所有依赖项)。