SBT:具有不同依赖关系的两个 Scala 版本的交叉构建项目
SBT: Cross build project for two Scala versions with different dependencies
我有以下用例。我想为 scala 2.10 和 2.12 构建相同的 Scala 项目。这样做时,我想指定所提供的 2.10 版本的一些依赖项,而我想在 2.12 的 jar 中编译这些依赖项。
我正在查看 SBT 的文档,发现如何将 build.sbt
拆分为单独的声明,但这些声明总是被称为 子模块 。就我而言,我想交叉构建整个应用程序 - 而不是它的特定部分。
任何提示或资源将不胜感激。
您可以 assemble libraryDependencies 取决于 Scala 版本。简化示例,可能无法构建..:[=12=]
libraryDependencies := {
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, scalaMajor)) if scalaMajor == 12 =>
libraryDependencies.value ++ Seq(
"your.org" %% "your-lib" % "1.0")
case Some((2, scalaMajor)) if scalaMajor == 10 =>
libraryDependencies.value ++ Seq(
"your.org" %% "your-lib" % "1.0" % provided)
case _ => Seq()
}
}
有关完整示例,请参阅 http://github.com/scala/scala-module-dependency-sample
我有以下用例。我想为 scala 2.10 和 2.12 构建相同的 Scala 项目。这样做时,我想指定所提供的 2.10 版本的一些依赖项,而我想在 2.12 的 jar 中编译这些依赖项。
我正在查看 SBT 的文档,发现如何将 build.sbt
拆分为单独的声明,但这些声明总是被称为 子模块 。就我而言,我想交叉构建整个应用程序 - 而不是它的特定部分。
任何提示或资源将不胜感激。
您可以 assemble libraryDependencies 取决于 Scala 版本。简化示例,可能无法构建..:[=12=]
libraryDependencies := {
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, scalaMajor)) if scalaMajor == 12 =>
libraryDependencies.value ++ Seq(
"your.org" %% "your-lib" % "1.0")
case Some((2, scalaMajor)) if scalaMajor == 10 =>
libraryDependencies.value ++ Seq(
"your.org" %% "your-lib" % "1.0" % provided)
case _ => Seq()
}
}
有关完整示例,请参阅 http://github.com/scala/scala-module-dependency-sample