2015-03-01 9 views
6

Io usosbt non riesce a trovare repository locale definito da Resolver.file()

name := "sbt-publish-test" 

version := "0.1-SNAPSHOT" 

publishTo := Some(Resolver.file("sbt-repo", file("/home/pishen/sbt-repo"))) 

e sbt publish di pubblicare il mio progetto nella directory.

Ora in un altro progetto, voglio risolvere il progetto che ho appena pubblicato. Io uso

resolvers += "my-repo" at "file:///home/pishen/sbt-repo" 

libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT" 

ed è in grado di risolvere il progetto senza errori. Il risultato di show resolvers è:

> show resolvers 
[info] List(my-repo: file:///home/pishen/sbt-repo) 

Ma, quando io uso

resolvers += Resolver.file("my-repo", file("/home/pishen/sbt-repo")) 

libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT" 

Il risultato di show resolvers diventano:

> show resolvers 
[info] List(FileRepository(my-repo,FileConfiguration(true,None),Patterns(ivyPatterns=List(), artifactPatterns=List(/home/pishen/sbt-repo/[organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]/[artifact]-[revision](-[classifier]).[ext]), isMavenCompatible=true, descriptorOptional=false, skipConsistencyCheck=false))) 

e SBT ha detto che non è possibile risolvere la dipendenza quando Ho digitato sbt update:

[warn] module not found: default#sbt-publish-test_2.10;0.1-SNAPSHOT 
[warn] ==== local: tried 
[warn] /home/pishen/.ivy2/local/default/sbt-publish-test_2.10/0.1-SNAPSHOT/ivys/ivy.xml 
[warn] ==== public: tried 
[warn] https://repo1.maven.org/maven2/default/sbt-publish-test_2.10/0.1-SNAPSHOT/sbt-publish-test_2.10-0.1-SNAPSHOT.pom 
[warn] ==== my-repo: tried 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: default#sbt-publish-test_2.10;0.1-SNAPSHOT: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 

È un bug? O sto usando Resolver.file() in modo sbagliato? Qual è la differenza tra "name" at "url" e Resolver.file()? Sto usando sbt 0.13.7.

+0

Questo potrebbe aiutare: https://github.com/sbt/sbt/issues/1917 –

risposta

1

mio sospetto è che quando si utilizza Resolver.file in tale contesto, è destinato ad essere più di un creatore "costruttore", in attesa di chiamata di metodo conseguente di compilare le informazioni di configurazione aggiuntiva che hanno diversi valori di default quando si usa la sintassi "name" at "uri".

I sbt ScalaDoc for Resolver.file.apply allude a qualcosa in questo senso:

costruisce un resolver file con il nome dato. I pattern da usare devono essere esplicitamente specificati usando i metodi ivys o artifacts sull'oggetto resolver costruito.

Quando ho fatto qualcosa di simile a quello che stai facendo, comincio con un File e utilizzare le sue API per convertirlo in forma URI:

resolvers += "my-repo" at file("/home/pishen/sbt-repo").toURI.toASCIIString 
Problemi correlati