доступ к зависимым (не дочерним) проектам в плагине sbt с помощью scala версии 2.11.7

Мой образец плагина sbt отлично компилируется со scala версии 2.10.6. Я пытаюсь обновить scalaVersion: = "2.11.7" в sbt plugin 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 в следующем вопросе: -

доступ к зависимым (не дочерним) проектам в подключаемом модуле sbt

Упрощенный плагин 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"? Я хочу, чтобы этот плагин использовался с проектами, в которых используется масштабная версия 11.


person mogli    schedule 13.10.2017    source источник


Ответы (2)


Попробуй это:

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

Определения сборки SBT привязаны к версии scala используемой версией sbt:

  • Определения сборки и код sbt 0.12.x должны быть скомпилированы для scala 2.9.x
  • Определения сборки и код sbt 0.13.x должны быть скомпилированы для scala 2.10.x

поскольку 1.0.0 sbt скомпилирован для scala версии 2.12 и требует Java 8

So,

не существует версии sbt, в которой определения сборки sbt можно было бы скомпилировать с помощью scala 2.11 (по крайней мере, без риска ошибок).

Вы можете управлять используемой версией sbt, установив ее в project/build.properties:

sbt.version=1.0.0

Убедитесь, что вы используете текущий сценарий оболочки sbt.

person Sascha Kolberg    schedule 16.10.2017