基于尺度厌恶的条件addSbtPlugin
我使用的插件(sbt替罪羊)只适用于Scala 2.11 我可以有一个基于规模厌恶的条件addSbtPlugin吗?比如:基于尺度厌恶的条件addSbtPlugin,sbt,Sbt,我使用的插件(sbt替罪羊)只适用于Scala 2.11 我可以有一个基于规模厌恶的条件addSbtPlugin吗?比如: if (scalaVersion.value.startsWith("2.11")) addSbtPlugin("com.sksamuel.scapegoat" %% "sbt-scapegoat" % "0.94.6") 我如何在SBT中做到这一点 建始tl;dr根据问题的描述,这是不可能的 sbt项目中至少涉及两种构建配置—真正的项目(您想把钱押在上面)和项目构建的元
if (scalaVersion.value.startsWith("2.11")) addSbtPlugin("com.sksamuel.scapegoat" %% "sbt-scapegoat" % "0.94.6")
我如何在SBT中做到这一点
建始tl;dr根据问题的描述,这是不可能的 sbt项目中至少涉及两种构建配置—真正的项目(您想把钱押在上面)和项目构建的元构建。是的,我知道这听起来有点奇怪,但这是一个非常强大的概念 见: 项目目录是构建中的另一个构建,它知道如何构建构建。为了区分构建,我们有时使用术语“正确构建”来指代您的构建,而使用元构建来指代内置项目。元构建中的项目可以做任何其他项目可以做的事情。您的构建定义是一个sbt项目 sbt在Scala上运行,需要严格的版本。没有办法改变它,除非你想把时间花在本来不该碰的东西上:) 您可以在
project/plugins.sbt
中应用插件,然后在项目中,根据项目构建的scalaVersion
而不是元构建本身,有选择地应用插件的设置
这并不像答案所说的那么复杂,但解释简单的概念对我来说通常不是一件容易的事情。享受sbt带来的乐趣!如果使用得当,它会很快回报您。2020年更新答案:您可以在
addSbtPlugin
上使用.filter
例如,以下工作:
val scalafixEnabled=System.getProperty(“SCALAFIX”),trim.nonEmpty
addSbtPlugin(“ch.epfl.scala”%”sbt scalafix“%”0.9.14”).filter(=>scalafixEnabled)
您能再描述一下您的用例是什么吗?尤其是多模块构建?交叉建造?什么是Scala版本?我问这个问题只是因为回答起来有点棘手,因为最好的答案取决于你的情况。嗨,戴尔,这是一个单一的模块构建。我没有使用交叉构建功能。Scala版本是2.11.6或2.10.5,Scala版本是2.11.6或2.10.5吗?不知道你的意思在我的例子中,我需要禁用Scala 2.12版本的scoverage,因为它还不支持该版本。换句话说,项目定义将取决于活动的Scala版本,而不是sbt Scala版本。找到解决方法,请参阅您的答案忽略对Scala版本的依赖