2013-01-15 20 views
8

sbt içinde publish-local çalışırken, aşağıdaki çıktıyı almak:sbt yerel yayınlama: Tanımsız çözümleyicinizi 'Yerel'

[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' 

Bunun nedeni benim yapı dosyasında bazı ayarların şüpheli yayınlamak yerel eserler nedeniyle taze projeler. publish-local'un nasıl yapılacağı hakkında bir fikriniz var mı?

cevap

11

Biz sorunun external-resolvers geçersiz kılarak neden oldu öğrendim:

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

Bizim resolverler varsayılan Maven merkezi depo dışlamak için bunu yaptı. Ancak, bu, publish-local tarafından kullanılan yerel çözümleyicisini de kaldırmıştır.

çözüm

geri yerel çözümleyicinizi eklemek oldu:

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

Başka bir çözüm externalResolvers geçersiz ama sadece Maven merkezi devre dışı olacaktır.

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

size publish-local sonra, Sarmaşık uzaktan anlık sürümlere göre yerel anlık sürümüne tercih ettiği anlaşılmaktadır. Yayınlanan eserinizin başka bir proje tarafından alınması için, bu projede sbt compile'u çalıştırın (sbt update'un bile gerekli olmadığı anlaşılıyor). http://www.scala-sbt.org/release/docs/Detailed-Topics/Proxy-Repositories.html:

Ayrıca, kullanıcı tarafından seviyesinde depoları geçersiz kılma ilginizi çekebilir da http://www.scala-sbt.org/release/docs/Detailed-Topics/Library-Management.html

+2

bakınız. –