Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于尺度厌恶的条件addSbtPlugin_Sbt - Fatal编程技术网

基于尺度厌恶的条件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项目中至少涉及两种构建配置—真正的项目(您想把钱押在上面)和项目构建的元

我使用的插件(sbt替罪羊)只适用于Scala 2.11

我可以有一个基于规模厌恶的条件addSbtPlugin吗?比如:

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版本的依赖