我使用的只是Scala 2.11的插件(sbt-scapegoat)。基于scalaVersion的条件addSbtPlugin
我可以有一个基于scalaVersion的条件addSbtPlugin吗? Like:
if (scalaVersion.value.startsWith("2.11")) addSbtPlugin("com.sksamuel.scapegoat" %% "sbt-scapegoat" % "0.94.6")
我该如何在SBT中做到这一点?
建始
我使用的只是Scala 2.11的插件(sbt-scapegoat)。基于scalaVersion的条件addSbtPlugin
我可以有一个基于scalaVersion的条件addSbtPlugin吗? Like:
if (scalaVersion.value.startsWith("2.11")) addSbtPlugin("com.sksamuel.scapegoat" %% "sbt-scapegoat" % "0.94.6")
我该如何在SBT中做到这一点?
建始
TL;博士它给出的问题的描述是不可能的。
有至少两个构建配置涉及一个sbt项目 - 真正的项目(你想打赌你的钱)和元构建项目的构建。是的,我知道这听起来有点奇怪,但它是一个非常强大的概念恕我直言。
项目目录是您的构建,它知道如何构建内部建立另一个版本。为了区分构建,我们有时使用术语“正确构建”来引用您的构建,而元构建则引用项目中的构建。 metabuild内的项目可以做任何其他项目可以做的事情。你的构建定义是一个sbt项目。
sbt运行在Scala上,需要它的严格版本。没有办法改变它,除非你喜欢把时间花在你应该不会触及的东西上:)
你可以做的是将插件应用于project/plugins.sbt
,然后在项目中应用的设置的插件有选择性地,每scalaVersion
该项目的构建而不是元构建本身。
答案没有那么复杂,但解释简单的概念对我来说通常不是一件容易的事。与sbt玩得开心!如果使用得当,它很快就会付清。
你能描述一下你的用例多一点吗?特别是它是一个多模块构建?跨建?什么Scala版本?我只问,因为回答有点棘手,因为最好的答案取决于你的情况。 –
嗨戴尔,这是一个单模块构建。我没有使用跨构建功能。 Scala版本是2.11.6或2.10.5 – huangjs
它是如何Scala版本2.11.6或版本2.10.5?不知道你的意思 –