15

今、私はどういうわけか私のグローバルsbtプラグインを台無しにしました(~/.sbt/plugins/build.sbt)。それらは、sbt0.11.3が必要とするバージョンであると思われるScala2.9.1に対して常に正常に取得され、すべてのプラグイン(sbt-gpg-plugin、sbt-idea-plugin)は2.9.1に対して公開されています。

今私が何をするにしても、それは2.9.2に対して構築されたものを永続的に見つけようとします:

[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]      com.github.mpeltonen:sbt-idea:1.0.0 (sbtVersion=0.11.3, scalaVersion=2.9.2)
[warn]      com.jsuereth:xsbt-gpg-plugin:0.6 (sbtVersion=0.11.3, scalaVersion=2.9.2)
...
[error] {file:...}default-50be6e/*:update: sbt.ResolveException: unresolved dependency: com.github.mpeltonen#sbt-idea;1.0.0: not found

どうすればこれを修正できますか?sbtは以前と同じようにScala 2.9.1のプラグインを取得しますか?


完全を期すために、これは私のファイルが提案をどのように処理するかです。

// project-home/build.sbt
scalaVersion := "2.9.2"
...

 

// project-home/project/plugins.sbt
resolvers += "less is" at "http://repo.lessis.me"

addSbtPlugin( "me.lessis" % "ls-sbt" % "0.1.1" )

scalaVersion := "2.9.1"  // "just in case it helps"

 

// ~/.sbt/plugins/build.sbt
scalaVersion := "2.9.1"  // "just in case it helps"

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

resolvers += Resolver.url( "sbt-plugin-releases", url( "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases" ))( Resolver.ivyStylePatterns )

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.0.0")

addSbtPlugin( "com.jsuereth" % "xsbt-gpg-plugin" % "0.6" )

さらに悪いことに、削除 ~/.sbt/plugins/build.sbtした後も問題は解決しません。したがって、sbt-ideaまたはxsbt-gpg-pluginへの参照(少なくとも私には表示されます)はもうありません。それでも、sbtはこれら2つのプラグインを見つけようとするため、プロジェクトをコンパイルできなくなります。エピックは失敗します。

4

4 に答える 4

13

プラグインのScalaバージョンを提供できます。〜/ .sbt /は使用しませんでしたが、うまくいくと思います。

以下は、プロジェクトコンパイラとしてScala 2.9.2を使用し、Scala2.9.1からコンパイルされたいくつかのpluignを使用したプロジェクト構成です。Scala2.9.1とScala2.9.2はバイナリ互換なので、まだ問題は発生していません。

// MyProject/build.sbt

name := "MyProject"            

version := "0.1"            

scalaVersion := "2.9.2"     

プラグインの構成は次のとおりです。

// File: MyProject/project/plugins.sbt

import sbt._

import Defaults._

resolvers += Resolver.url("sbt-plugin-releases",
  new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(
    Resolver.ivyStylePatterns)


// Resolved to: 
//
//  http://..../com.untyped/sbt-less/scala_2.9.1/sbt_0.11.3/0.4/jars/sbt-less.jar 
//
libraryDependencies += sbtPluginExtra(
    m = "com.untyped" % "sbt-less" % "0.4", // Plugin module name and version
    sbtV = "0.11.3",    // SBT version
    scalaV = "2.9.1"    // Scala version compiled the plugin
)
于 2012-08-02T00:20:27.330 に答える
4

いくつかの参考文献:

SBTプラグインは、それらが構築されたscalaバージョンにバージョン管理されています。

あなただけではありません... 繰り返しますが、答えはありません。

そして別のケーススタディ、これには答えがあるかもしれません

おそらく関連する引用?「project/plugins -directoryも削除することを忘れないでください。ディレクトリが存在する場合、project/plugins.sbtは無視されるためです。」

于 2012-08-01T23:35:22.043 に答える
3

sbtVersionおよびを指定することもできますscalaVersion。過負荷がありますaddSbtPlugin-

addSbtPlugin(dependency : sbt.ModuleID, sbtVersion : scala.Predef.String, scalaVersion : scala.Predef.String)
于 2018-04-24T03:27:53.393 に答える
0

さて、私はこれにつながる可能性のあるすべてのイベントに戻りました。そして、他のプロジェクトがまだ構築中であることがわかったので、この特定のプロジェクトの問題はB、2つのプラグインが依存しているプロジェクトの通常の依存関係Aであるように見えることであると理解し始めました。

sbtがコメントを外したGPGプラグインの存在を確認することを拒否したとき~/.sbt/plugins/build.sbt、私はそのファイルの名前をに変更し~/.sbt/plugins.sbt再び元に戻しました。その中間的な位置は、プラグインが(として追加されたにもかかわらず)もはやプラグインではなく、それを公開したときaddSbtPluginのプロジェクトの通常の依存関係であることを意味しました。A

A私は、すべての既知のivy.xmlIvy2キャッシュディレクトリで混乱していることを見つけようとしました。sbtが明らかに見ているものを見つけることができませんでした。

長い話、短い答え:隠された場所のどこかにキャッシュされAた間違ったものを取り除くために、私は人為的にバージョンをぶつけなければなりませんでした。そのため、sbtは正しいものでivy.xml再検索する必要がありました(プラグインに依存しなくなりました)。Aivy.xml

グローバルプラグイン設定を配置するとどうなるか心配です:-#


将来のアドバイス:決して何も入れないでください~/.sbt/plugins.sbt。変更したことを理解するためにsbtが必要な場合~/.sbt/plugins/build.sbt:コンピューターを再起動します。ファイルには触れないでください。

于 2012-08-01T23:50:12.697 に答える