gpt4 book ai didi

scala - sbt 在多项目构建中使用不同的 Scala 版本

转载 作者:行者123 更新时间:2023-12-01 09:28:45 25 4
gpt4 key购买 nike

我有一个使用两个版本的 Scala 的多项目。 Build.scala 看起来像这样:

import sbt._
import Keys._

object Build extends sbt.Build {
lazy val root: Project = Project(
id = "scalacolliderugens",
base = file("."),
aggregate = Seq(gen, core)
)

lazy val gen = Project(...)
lazy val core = Project(...)

val ugenGenerator = TaskKey[Seq[File]]("ugen-generate", "Generate UGen class files")

def runUGenGenerator(source: File, cp: Seq[File]): Seq[File] = Nil // TODO
}

我有一个使用 Scala 2.9.2 的纯源代码生成项目:

  lazy val gen = Project(
id = "scalacolliderugens-gen",
base = file("gen"),
settings = Project.defaultSettings ++ Seq(
scalaVersion := "2.9.2", // !!!
libraryDependencies ++= Seq(
"org.scala-refactoring" % "org.scala-refactoring_2.9.1" % "0.4.1"
),
libraryDependencies <+= scalaVersion { sv =>
"org.scala-lang" % "scala-compiler" % sv
}
)
)

以及包含生成的源代码的实际项目,针对 Scala 2.10 进行编译:

 lazy val core = Project(
id = "scalacolliderugens-core",
base = file("core"),
settings = Project.defaultSettings ++ Seq(
scalaVersion := "2.10.0", // !!!
sourceGenerators in Compile <+= (ugenGenerator in Compile),
ugenGenerator in Compile <<=
(scalaSource in Compile, dependencyClasspath in Runtime in gen) map {
(src, cp) => runUGenGenerator(src, cp.files)
}
)
).dependsOn(gen)

当我编译它时,我收到 sbt 警告:

[warn] Binary version (2.9.2) for dependency org.scala-lang#scala-library;2.9.2
[warn] in de.sciss#scalacolliderugens_2.10;1.0.1 differs from Scala binary \
version in project (2.10).
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Done updating.
[warn] Binary version (2.9.2) for dependency org.scala-lang#scala-library;2.9.2
[warn] in de.sciss#scalacolliderugens-gen_2.10;1.0.1 differs from Scala binary \
version in project (2.10).
[warn] Binary version (2.9.2) for dependency org.scala-lang#scala-compiler;2.9.2
[warn] in de.sciss#scalacolliderugens-gen_2.10;1.0.1 differs from Scala binary \
version in project (2.10).

我应该担心吗?我在这里做坏事吗?

最佳答案

将以下设置添加到 gen 项目。

scalaBinaryVersion:= CrossVersion.binaryScalaVersion("2.9.2")

关于scala - sbt 在多项目构建中使用不同的 Scala 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14753475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com