我的示例sbt插件正在使用scala版本2.10.6进行编译。 我正在尝试升级scalaVersion:=" 2.11.7"在sbt插件build.sbt。
中它打破了以下CTE: -
/Users/mogli/gitrepos/study/SbtPlugins/ScalaPlugin/src/main/scala/base/BasePlugin.scala:21: 无法扩展以前版本的Scala编译的宏[错误]
val projects = thisProject.value.dependencies
这与scalaVersion:=" 2.10.6"正如Micro Dotta在下面的问题中所建议的: -
accessing dependent (not child) projects in sbt plugin
Simplified sbt插件BasePlugin.scala:
package base
import sbt.{ThisBuild, Def, TaskKey, AutoPlugin}
import sbt._
import Keys._
object BasePlugin extends AutoPlugin {
object autoImport {
lazy val customtask: TaskKey[Unit] = TaskKey("customtask")
}
import autoImport.customtask
override def projectSettings: Seq[Def.Setting[_]] = Seq(
customtask := {
val projects = thisProject.value.dependencies
projects map println
}
)
}
如何使用scalaVersion:=" 2.11.7"?我希望这个插件用于使用scal版本11的项目。
答案 0 :(得分:0)
试试这个:
override def projectSettings: Seq[Def.Setting[_]] = Seq(
customtask := {
val projects = thisProject.value.dependencies
projects map println
},
scalaVersion := "2.11.7"
)
答案 1 :(得分:0)
SBT构建定义与他们使用的sbt版本绑定到scala版本:
因为1.0.0 sbt是针对scala版本2.12编译的,需要Java 8
所以,
没有sbt版本可以使用scala 2.11编译sbt构建定义(至少不会没有冒错误的风险)。
您可以通过在project/build.properties
中设置它来操纵您正在使用的sbt版本:
sbt.version=1.0.0
确保使用当前的sbt包装器脚本。