2011-11-22 32 views
28

Tôi có các dòng sau trong tệp build.sbt của mình.Tải xuống lại phiên bản phụ thuộc SNAPSHOT bằng cách sử dụng SBT

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

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

Bây giờ nếu ảnh chụp đã thay đổi (điều này là hợp lý ở tất cả, rằng một phiên bản maven SNAPSHOT thay đổi mà không cần số phiên bản của nó thay đổi?), Làm thế nào tôi có thể nói SBT để tải phiên bản mới? Sử dụng update không làm gì cả.

Trả lời

51

bạn nên thử:

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

changing() sẽ xác định rằng sự phụ thuộc có thể thay đổi và rằng nó ivy phải tải nó trên mỗi update.

Có thể bạn cũng có thể thử xác định kho lưu trữ của mình bằng cách sử dụng ivyXML. Một cái gì đó như thế này:

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

Hy vọng điều này sẽ hữu ích.

+2

Tôi hy vọng rằng tùy chọn này không phải được chỉ định nhưng có thể được suy ra từ chuỗi * SNAPSHOT *. Sbt/ivy chỉ kiểm tra tổng kiểm tra và không tải xuống lại nếu bình chưa thay đổi? – ziggystar

+0

Ivy định nghĩa 'matchPattern' mà bạn có thể sử dụng khi xác định trình phân giải. 'MatchingPattern' này cung cấp cho bạn khả năng xác định một mẫu (ví dụ' "* -SNAPSHOT" ') cho các tạo tác mà cuối cùng sẽ thay đổi theo thời gian. Bạn nên cố gắng xác định một trình phân giải với thuộc tính này bằng cách sử dụng thiết lập 'ivyXML', có thể SBT sẽ xem xét nó. – David

+7

Ít nhất là 0,12,1, bạn không cần chỉ định thay đổi: http://www.scala-sbt.org/release/docs/Detailed-Topics/Dependency-Management-Flow.html dòng cuối cùng: "Có không cần đánh dấu các phụ thuộc SNAPSHOT như là thay đổi() vì sbt cấu hình Ivy để biết điều này rồi. " –

Các vấn đề liên quan