我需要使用 sbt 程序集为多个版本的 scala 创建 fat jar 子。
当我针对单个版本时,我写在 simple.sbt
:
scalaVersion := "2.11.12"
并且 fat jar 输出到
target/scala-2.11/Kernalytics-assembly-1.0.jar
.现在我还想针对 Scala 2.12。我可以编辑 sbt 文件来更改 scalaVersion,但是当我调用 sbt assembly
时,我希望在一系列 Scala 版本上自动化组装过程。 .如果我使用
crossScalaVersions
:name := "Kernalytics"
version := "1.0"
crossScalaVersions := Seq("2.11.12", "2.12.4")
libraryDependencies ++= Seq(
"org.scalanlp" %% "breeze" % "0.13.2",
"org.scalanlp" %% "breeze-natives" % "0.13.2",
"org.scalanlp" %% "breeze-viz" % "0.13.2"
)
libraryDependencies += "commons-io" % "commons-io" % "2.6"
resolvers += "Sonatype Releases" at "https://oss.sonatype.org/content/repositories/releases/"
libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.4"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.4" % "test"
唯一的输出是
target/scala-2.12/Kernalytics-assembly-1.0.jar
最佳答案
如果您使用 crossScalaVersions
如果要为所有版本构建,我认为您需要在命令前加上“+”。
来自 Cross-Building a Project :
To build against all versions listed in crossScalaVersions, prefix the action to run with +
关于scala - 多个目标的 Sbt 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009188/