如何使用 sbt 创建包含源(.java 和 .scala)和 类 的 .jar?

Howto create a .jar including both sources (.java and .scala) and classes with sbt?

我希望 sbt package 或任何变体从我的项目中生成一个“.jar”,其中还包括源代码(“.java”和“.scala”文件)。

这将是 packageBin 和 packageSrc 的混合。

我没有:

感谢任何提示。

查看 documentation,您可能应该向 packageBin 范围内的 mappings 键添加内容。以下似乎对我有用:

mappings in (Compile, packageBin) ++= (mappings in (Compile, packageSrc)).value

以下是如何设置独立任务以创建带有二进制文件和源代码的工件,同时 packageBinpackageSrc 不受影响:

val packageBinSrc = taskKey[File]("Produces an artifact containing both binaries and sources.")

artifactClassifier in packageBinSrc := Some("binsrc")
inConfig(Compile) {
  import Defaults._
  packageTaskSettings(packageBinSrc, concatMappings(packageBinMappings, packageSrcMappings))
}

可选,如果您喜欢,可以重新定义 package 以使用 packageBinSrc:

Keys.`package` := (packageBinSrc in Compile).value