如何使用 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
以下是如何设置独立任务以创建带有二进制文件和源代码的工件,同时 packageBin
和 packageSrc
不受影响:
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
我希望 sbt package
或任何变体从我的项目中生成一个“.jar”,其中还包括源代码(“.java”和“.scala”文件)。
这将是 packageBin 和 packageSrc 的混合。
我没有:
- 找到可以执行此操作的任务吗?
- 找到如何适配包任务
- 也没有定义我的新任务来实现这个
感谢任何提示。
查看 documentation,您可能应该向 packageBin
范围内的 mappings
键添加内容。以下似乎对我有用:
mappings in (Compile, packageBin) ++= (mappings in (Compile, packageSrc)).value
以下是如何设置独立任务以创建带有二进制文件和源代码的工件,同时 packageBin
和 packageSrc
不受影响:
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