首页 文章

使用scala版本2.11.7访问sbt插件中的依赖(非子)项目

提问于
浏览
0

我的示例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 回答

  • 0

    试试这个:

    override def projectSettings: Seq[Def.Setting[_]] = Seq(
            customtask := {
              val projects = thisProject.value.dependencies
              projects map println
            },
            scalaVersion := "2.11.7"
          )
    
  • 0

    SBT构建定义与他们使用的sbt版本的scala版本相关联:

    必须针对scala 2.9.x编译

    • sbt 0.12.x构建定义和代码
      必须根据scala 2.10.x编译
    • sbt 0.13.x构建定义和代码

    因为1.0.0 sbt是针对scala版本2.12编译的,需要Java 8

    所以,

    没有sbt版本可以使用scala 2.11编译sbt构建定义(至少不会没有冒错误的风险) .

    您可以通过在_2794649中设置它来操纵您正在使用的sbt版本:

    sbt.version=1.0.0
    

    确保使用当前的sbt包装器脚本 .

相关问题