0

SBT のバージョンが完全修飾依存関係の名前で役割を果たしているのはなぜですか?

Scalaのバージョンだけに依存すると思っていました。

これが例です。

  • build.sbtscalaVersion設定しました2.10.2
  • build.propertiessbt.version設定しました0.12.1
  • plugins.sbtプラグインの依存関係があります"com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1"

ビルドすると、ログに次のように表示されます。

[info] Resolving com.github.siasia#xsbt-web-plugin_2.9.2;0.12.0-0.2.11.1 ...

しかし、sbt.version設定を0.13.0-RC5SBT に変更すると、このプラグインが見つからず、ログに表示されます

[info] Resolving com.github.siasia#xsbt-web-plugin_2.10;0.12.0-0.2.11.1 ...

config に 2.10.2 が残っているのに、なぜ scala バージョンを変更したのですか? それを修正する方法?

4

1 に答える 1

4

sbt プロジェクトは再帰的であるため、各レイヤーには独自の設定 (scala バージョンとクラスパスを含む) があります ( http://www.scala-sbt.org/0.13.0/docs/Getting-Started/Full-Def.htmlを参照) 。

sbt プラグインは sbt に依存する単なる通常のライブラリであるため、プラグインは sbt バージョン間でクロスビルドする必要があります (各 sbt バージョンには異なる scala バージョンが必要になる場合があります)。

addSbtPlugin 関数がそれを処理し、現在の sbt と scala の適切なアーティファクトを解決します

siasia#xsbt-web-plugin は実際にはメンテナンスされておらず、sbt 0.13 のバージョンはありません。代わりにhttps://github.com/JamesEarlDouglas/xsbt-web-pluginを使用してください。

于 2013-08-21T02:29:16.077 に答える