如何从特定项目的交叉构建的sbt多项目中删除scala版本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从特定项目的交叉构建的sbt多项目中删除scala版本相关的知识,希望对你有一定的参考价值。
我在一个多项目sbt中有一个scala交叉构建设置。在其中一个项目中,我试图禁用针对其中一个scala版本的构建,因为它依赖于2.10上不支持的akka-http。
我试图从crossScalaVersions
字段中删除特定版本,但sbt仍尝试针对2.10构建它。我怀疑这是因为这个项目依赖于另一个与2.10交叉构建的兄弟项目
sbt看起来像这样(缩写为易读性):
lazy val commonSettings = Seq(
........... Common settings ................
)
// aggregate root project
lazy val root = project.in(file(".")).aggregate(
anotherSiblingProject,
service
).settings(commonSettings)
lazy val anotherSiblingProject: Project = project.in(file("anotherSiblingProject"))
.settings(
commonSettings,
crossScalaVersions := Seq("2.10.4", "2.11.11", "2.12.2"), <<<< BUILDS AGAINST ALL OF THESE
)
// WANT TO REMOVE THE CROSS BUILD FOR THiS
lazy val service: Project = project.in(file("service"))
.dependsOn(anotherSiblingProject)
.settings(
commonSettings,
crossScalaVersions := Seq("2.11.11"), <<<<<< ONLY WANT TO BUILD AGAINST THIS VERSION
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-http" % "10.1.4",
"com.typesafe.akka" %% "akka-stream" % "2.5.12",
"com.typesafe.akka" %% "akka-http-spray-json" % "10.1.4",
"com.typesafe.scala-logging" %% "scala-logging" % "3.4.0"
)
)
答案
我想你在scalaVersion
有commonSettings
。所以你可以从crossScalaVersions
中删除service
并显式编译像sbt '++ 2.11.11 anotherSiblingProject/compile' 'service/compile'
这样的服务
以上是关于如何从特定项目的交叉构建的sbt多项目中删除scala版本的主要内容,如果未能解决你的问题,请参考以下文章
如何通过将 sbt-plugin 用作多项目构建中的依赖项来访问它的子项目?
如何为 appJS/appJVM 交叉构建项目运行 scala sbt-native-packager