首页 文章

如何从特定项目的交叉构建的sbt多项目中删除scala版本

提问于
浏览
0

我在一个多项目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"
    )
)

1 回答

  • 1

    我想你 commonSettings 中有 scalaVersion . 所以你可以从 service 删除 crossScalaVersions 并显式编译服务 sbt '++ 2.11.11 anotherSiblingProject/compile' 'service/compile'

相关问题