【发布时间】:2020-11-17 18:43:58
【问题描述】:
目前在我的BuildSettings.scala 文件中我正在使用crossScalaVersion := Seq("2.12.11", "2.13.2") 和我的scalaVersion := "2.13.2",现在当我进行sbt 编译时,它可以正确地使用2.13.2 编译,没有任何问题。现在,当我执行+ compile 时,首先它使用2.12.11 编译,然后使用2.13.2 编译并在此处失败。现在它在+ compile 上使用2.13.2 失败的原因是因为我有一些集合库和一些其他库,它们仅在2.12.11 中受支持,而不在2.13.2 中受支持,例如,如果我们查看这段代码:
package com.abc.models.common.implicits
import scala.collection.TraversableLike
trait TraversableExtension {
implicit class traversableExtension[A, B](iterable: TraversableLike[A, B]) {
def headOrError(message: String): A = {
iterable.headOption.getOrElse(throw new Exception(message))
}
}
}
TraversableLike 在2.13.2 中不再存在,在其他一些文件中我也面临2.13.2 不再支持类的其他问题。
我可以根据2.13.2 标准和支持库更新代码,无论是上述集合的替代方案等。但随后+ compile 失败,即使用2.12.11 编译失败,因为这些库不会存在于2.12.11 中。
我怎样才能使它同时适用于这两个版本?
【问题讨论】:
-
除了马里奥建议的(您可能还需要),对于收集特定问题,您应该使用Scala-colllection-compat library
-
Nitpick:您的意思似乎是“类”,而不是“库”。这里涉及的唯一库——如果我理解正确的话——是 Scala 标准库。
-
嗯,我猜,收集库主要是:scala.collection,还有其他包中的一些类,例如:akka-http 旧版本
-
啊,还涉及到其他库。希望您能找到适用于 2.12.x 和 2.13.x 的那些依赖项的版本——那么您就不需要 Mario 建议的技巧了。
标签: scala sbt scala-collections