我的示例sbt插件正在使用scala版本2.10.6进行编译 . 我试图在sbt插件build.sbt中升级scalaVersion:=“2.11.7” .
它打破了以下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
简化的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的项目 .
2 回答
试试这个:
SBT构建定义与他们使用的sbt版本的scala版本相关联:
必须针对scala 2.9.x编译
必须根据scala 2.10.x编译
因为1.0.0 sbt是针对scala版本2.12编译的,需要Java 8
所以,
没有sbt版本可以使用scala 2.11编译sbt构建定义(至少不会没有冒错误的风险) .
您可以通过在_2794649中设置它来操纵您正在使用的sbt版本:
确保使用当前的sbt包装器脚本 .