2011-11-22 60 views
28

我在我的build.sbt文件中有以下行。使用SBT重新下載依賴關係的SNAPSHOT版本

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

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

現在,如果快照已改變(這是合理可言,如果沒有它的版本號改變一個maven快照版本的變化?),我怎麼能告訴SBT下載新版本嗎?使用update什麼都不做。

回答

51

你應該嘗試:

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

changing()將指定的依賴可以改變,它必須常春藤下載每個update

也許你也可以嘗試使用ivyXML定義你的倉庫。像這樣:

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

希望這會有所幫助。

+2

我預計這個選項不需要指定,但可以從* SNAPSHOT *字符串中傳遞。如果罐子沒有改變,請問只有檢查校驗和不要再下載? – ziggystar

+0

Ivy定義了一個'matchingPattern',您可以在定義解析器時使用它。這個'matchingPattern'使您能夠定義一個模式(例如'「* -SNAPSHOT」'),用於最終隨時間改變的文物。你應該嘗試使用'ivyXML'設置來定義一個具有這個屬性的解析器,也許SBT會考慮它。 – David

+7

至少在0.12.1中,您不需要指定更改:http://www.scala-sbt.org/release/docs/Detailed-Topics/Dependency-Management-Flow.html最後一行:「There不需要將SNAPSHOT依賴關係標記爲changing(),因爲sbt已經配置Ivy知道這一點。「 –

相關問題