2011-11-22 13 views
28

Ho le seguenti righe nel mio file build.sbt.Re-download di una versione SNAPSHOT di una dipendenza utilizzando SBT

resolvers += "specs2 snapshot repo" at "http://scala-tools.org/repo-snapshots" 

libraryDependencies += "org.specs2" %% "specs2" % "1.7-SNAPSHOT" % "test" 

Ora, se lo snapshot è cambiato (questo è ragionevole a tutti, che una versione di Maven SNAPSHOT modifiche senza il suo numero di versione cambia?), Come posso dire SBT per scaricare la nuova versione? Usare update non fa nulla.

risposta

51

si dovrebbe provare:

libraryDependencies += "org.specs2" %% "specs2" % "1.7-SNAPSHOT" % "test" changing() 

changing() specificherà che la dipendenza può cambiare e che l'edera deve scaricarlo su ogni update.

Forse si potrebbe anche provare a definire il repository utilizzando ivyXML. Qualcosa del genere:

ivyXML := 
    <resolvers> 
        <ibiblio name="specs2 snapshot repo" changingPattern="*-SNAPSHOT" m2compatible="true" root="http://scala-tools.org/repo-snapshots"/> 
    </resolvers> 

Spero che questo possa essere d'aiuto.

+2

Mi aspettavo che questa opzione non debba essere specificata ma può essere dedotta dalla stringa * SNAPSHOT *. Solo sbt/edi controllerà i checksum e non scaricherà di nuovo se il barattolo non è cambiato? – ziggystar

+0

Ivy definisce un 'matchingPattern' che puoi usare quando definisci un resolver. Questo 'matchingPattern' ti dà la possibilità di definire un pattern (per esempio' "* -SNAPSHOT" ') per artefatti che alla fine cambieranno nel tempo. Dovresti provare a definire un resolver con questo attributo usando l'impostazione 'ivyXML', forse SBT lo prenderà in considerazione. – David

+7

Almeno in 0.12.1, non è necessario specificare la modifica: http://www.scala-sbt.org/release/docs/Detailed-Topics/Dependency-Management-Flow.html l'ultima riga: "Là non è necessario contrassegnare le dipendenze di SNAPSHOT come change() perché sbt configura Ivy per saperlo già. " –

Problemi correlati