2013-01-15 6 views
8

をSBTにpublish-localしようとしたとき、私は次のような出力を得る:SBTローカル公開:不定リゾルバを「ローカル」

[info] :: delivering :: com.mycompany#util_2.9.1;0.1.0-SNAPSHOT :: 0.1.0-SNAPSHOT :: integration :: Tue Jan 15 11:23:01 CET 2013 
[info] delivering ivy file to /Users/martink/code/my-project/util/target/scala-2.9.1/ivy-0.1.0-SNAPSHOT.xml 
[trace] Stack trace suppressed: run last my-util/*:publish-local for the full output. 
[error] (my-util/*:publish-local) Undefined resolver 'local' 

私はこれが原因で私のビルドファイル内のいくつかの設定である疑いが上の公開ローカル動作するため新鮮なプロジェクト。 publish-localを再作成する方法に関するアイデアはありますか?

答えて

11

我々は問題がexternal-resolversをオーバーライドすることによって引き起こされたアウトが見つかりました:

val myRepo = "my-public" at "http://my-nexus-server/content/groups/public/" 
externalResolvers := Seq(publicRepo) 

私たちは、リゾルバからデフォルトのMaven中央リポジトリを除外するためにこれをしました。ただし、によって使用されているローカルリゾルバも削除されました。

ソリューション

が戻って地元のリゾルバを追加しました:

val ivyLocal = Resolver.file("local", file(Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns) 
externalResolvers := Seq(ivyLocal, myRepo) 

別の解決策は、externalResolversをオーバーライドしますが、単にMavenの中央を無効にしないことであろう。

resolvers := Seq(myRepo) 
externalResolvers <<= resolvers map { rs => 
    Resolver.withDefaultResolvers(rs, mavenCentral = false) 
} 

あなたpublish-local一度、アイビーは、リモートスナップショットのバージョンに比べてローカルスナップショットのバージョンを優先しているようです。公開された成果物を別のプロジェクトで取得させるには、そのプロジェクトにsbt compileを実行してください(sbt updateは不要です)。

http://www.scala-sbt.org/release/docs/Detailed-Topics/Library-Management.html

+2

を参照してください。また、ユーザーレベルでのリポジトリを上書きすることに興味があるかもしれない:http://www.scala-sbt.org/release/docs/Detailed-Topics/Proxy-Repositories.html。 –

関連する問題