web-dev-qa-db-ja.com

SBTがローカルMavenリポジトリにファイルを見つけられない

ローカルリポジトリにあるMaven依存関係に問題があります。

SBTはそれを見つけることができません。すでにログレベルをデバッグに設定していますが、新しいものは何も取得していません。

ファイルはリポジトリにあります。貼り付けパスをコンソールからエクスプローラーにコピーすると、そこにあります。

出力:

[debug]          trying file://c:/Users/userz/.m2/repository/com/Twitter/naggati/2.0.0/naggati-2.0.0.pom

[debug]                 tried file://c:/Users/userz/.m2/repository/com/Twitter/naggati/2.0.0/naggati-2.0.0.pom

[debug]         Local Maven Repository: resource not reachable for com/Twitter#naggati;2.0.0: res=file://c:/Users/userz/.m2/repository/com/Twitter/naggati/2.0
.0/naggati-2.0.0.pom

[debug]          trying file://c:/Users/userz/.m2/repository/com/Twitter/naggati/2.0.0/naggati-2.0.0.jar

[debug]                 tried file://c:/Users/userz/.m2/repository/com/Twitter/naggati/2.0.0/naggati-2.0.0.jar

[debug]         Local Maven Repository: resource not reachable for com/Twitter#naggati;2.0.0: res=file://c:/Users/userz/.m2/repository/com/Twitter/naggati/2.0
.0/naggati-2.0.0.jar

[debug]         Local Maven Repository: no ivy file nor artifact found for com.Twitter#naggati;2.0.0

編集: http://code.google.com/p/simpleで説明されているように、project/build にscalaファイルを使用してパスを追加しました-build-tool/wiki/LibraryManagement

「リポジトリとして追加すると、sbtはローカルのMavenリポジトリを検索できます。」

val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"

これにより、sbtがローカルリポジトリに表示されました。それがなかった前に。

したがって、scalaファイルは次のようになります。

import sbt._

class Foo(info: ProjectInfo) extends DefaultProject(info) {

val mavenLocal = "Local Maven Repository" at "file://c:/Users/userz/.m2/repository"

}

(考えられるエラーの理由を除外するためにPath.userHomeをハードコーディングしました。予想どおり、何も変更しませんでした)。

70
Ixx

file:指定子の後に3つのスラッシュが必要です。これは、2番目と3番目のスラッシュの間にオプションのホスト名があるためです。 Wikipedia にはfile: URLの説明があります

"file://"+Path.userHome+"/.m2/repository"の典型的なパターンは、パスが/で始まり、:を含まず、通常スペースを含まないUnixファイルシステムを想定しているため、問題が発生しています。

WindowsとLinux/Unixの両方で機能するハードコーディングされていないパスを使用するには、次を使用します。

"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository"
59
leedm777

この行をbuild.scalaまたはbuild.sbtファイルに追加するだけです

resolvers += Resolver.mavenLocal
129
Ben Rhouma Zied

これを新しいバージョンのsbtで機能させるには、次をbuild.sbtに追加します。

resolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository"
21
Marius

プロジェクトを定義したら、設定にリゾルバーを含める必要があります。グローバルリゾルバは識別されません。

例:

lazy val core = (project in file("core")).
  settings(commonSettings: _*).
  settings(
    resolvers += Resolver.mavenLocal,
    name := "Core",
    libraryDependencies := coreDependencies
  )
3
Dyin