2015-04-23 29 views
5

我使用的只是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中做到这一点?

建始

+0

你能描述一下你的用例多一点吗?特别是它是一个多模块构建?跨建?什么Scala版本?我只问,因为回答有点棘手,因为最好的答案取决于你的情况。 –

+0

嗨戴尔,这是一个单模块构建。我没有使用跨构建功能。 Scala版本是2.11.6或2.10.5 – huangjs

+0

它是如何Scala版本2.11.6或版本2.10.5?不知道你的意思 –

回答

4

TL;博士它给出的问题的描述是不可能的。

至少两个构建配置涉及一个sbt项目 - 真正的项目(你想打赌你的钱)和元构建项目的构建。是的,我知道这听起来有点奇怪,但它是一个非常强大的概念恕我直言。

sbt is recursive

项目目录是您的构建,它知道如何构建内部建立另一个版本。为了区分构建,我们有时使用术语“正确构建”来引用您的构建,而元构建则引用项目中的构建。 metabuild内的项目可以做任何其他项目可以做的事情。你的构建定义是一个sbt项目。

sbt运行在Scala上,需要它的严格版本。没有办法改变它,除非你喜欢把时间花在你应该不会触及的东西上:)

你可以做的是将插件应用于project/plugins.sbt,然后在项目中应用的设置的插件有选择性地,每scalaVersion该项目的构建而不是元构建本身。

答案没有那么复杂,但解释简单的概念对我来说通常不是一件容易的事。与sbt玩得开心!如果使用得当,它很快就会付清。