Как использовать плагин sbt-scalabuff с sbt 0.13?


Я пытаюсь использовать SBT-scalabuff plugin , но sbt продолжает жаловаться, что плагин не может быть найден.

Документация плагина также не указывает url-адрес решателя. Это плагин устарел или скала моя версия не поддерживается?

Подробности:

com.github.sbt:sbt-scalabuff:0.2 (sbtVersion=0.13, scalaVersion=2.10)

Вот мой plugins.sbt:

libraryDependencies += "net.sandrogrzicic" %% "scalabuff-runtime" % "1.3.6"

addSbtPlugin("com.github.sbt" %% "sbt-scalabuff" % "0.2")

Вот часть трассировки стека:

sbt.ResolveException: unresolved dependency: com.github.sbt#sbt-scalabuff;0.2: not found
    at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:213)
    at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:122)
    at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:121)
    at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:116)
    at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:116)
    at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:104)
    at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:51)
    at sbt.IvySbt$$anon$3.call(Ivy.scala:60)
    ...
[error] (*:update) sbt.ResolveException: unresolved dependency: com.github.sbt#sbt-scalabuff;0.2: not found
1 2

1 ответ:

Плагин sbt-scalabuff не имеет jar плагина, опубликованного в любом известном репозитории, который sbt мог бы использовать для вашей конфигурации - sbtVersion=0.13 и scalaVersion=2.10.

Я также сомневаюсь, что плагин поддерживает sbt 0.13 (Несколько моих попыток с треском провалились, когда я сам скомпилировал плагин, чтобы использовать версию).

Похоже, что ваши единственные варианты-понизить sbt до 0.12.4 или перенести плагин в 0.13.

С момента публикации плагина в репозитории Resolver.sbtPluginRepo("releases") , то есть http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases как http://dl.bintray.com/sbt/sbt-plugin-releases/com.github.sbt/sbt-scalabuff/scala_2.10/sbt_0.12/ вам придется использовать версию sbt.

Используйте следующее в project/sbt-scalabuff.sbt:

addSbtPlugin("com.github.sbt" %% "sbt-scalabuff" % "0.2")

Затем вы должны указать версию sbt в project/build.properties следующим образом:

sbt.version=0.12.4

Или просто используйте sbt-launch 0.12.4 .

Когда вы находитесь в консоли sbt, вы можете использовать задачу scalabuff или настройки: scalabuff-version, scalabuff-main и scalabuff-args.

> sbt-version
[info] 0.12.4
> about
[info] This is sbt 0.12.4
[info] The current project is {file:/Users/jacek/sandbox/sbt-scalabuff-test-project/}main
[info] The current project is built against Scala 2.9.2
[info] Available Plugins: org.sbtidea.SbtIdeaPlugin, com.timushev.sbt.updates.UpdatesPlugin, scalabuff.ScalaBuffPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.9.2
> scalabuff-version
[info] 1.1.1
> help scalabuff
Generate Scala sources from protocol buffers definitions
> scalabuff-args
[info] List()
> scalabuff-main
[info] net.sandrogrzicic.scalabuff.compiler.ScalaBuff

Смотрите скалябуфф.ScalaBuffPlugin объект в репозитории GitHub.

Мне также пришлось изменить объект сборки (как описано в разделе Usage), чтобы настроить проект с плагином на import sbt._:

import sbt._
import scalabuff.ScalaBuffPlugin._

object build extends Build {
  lazy val root = Project(
    "main",
    file("."),
    settings = Defaults.defaultSettings ++ scalabuffSettings
  ).configs(ScalaBuff)
}