2011-11-22 8 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 *文字列から推測することができます。 sbt/ivyはチェックサムだけをチェックし、jarファイルが変更されていない場合は再度ダウンロードしませんか? – 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を設定しているからです。 –

関連する問題