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

时间:2019-02-04 17:18:57

标签: scala jar sbt

我有一个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)

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

1 个答案:

答案 0 :(得分:0)

您可以看看sbt-assembly插件,它会为您的项目创建胖子(包括所有依赖项)。