1. ホーム
  2. scala

ローカルmavenリポジトリにファイルがあるにもかかわらず、SBTがファイルを見つけ出せない

2023-10-14 19:48:19

質問

私のローカルリスポジトリにある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

編集: project/buildにあるscalaファイルを使ってパスを追加しました。 で説明されているように http://code.google.com/p/simple-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をハードコードしました。予想通り、何も変わりませんでした)。

どのように解決するのですか?

の後にスラッシュが3つ必要です。 file: 指定子の後に 3 つのスラッシュが必要です。これは、2つ目と3つ目のスラッシュの間に、オプションでホスト名を指定するためです。 ウィキペディア には file: URLの

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

Windows と Linux/Unix の両方で動作するハードコードされていないパスを持つには、以下を使用します。

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