2011-11-22 10 views
28

का उपयोग कर निर्भरता के एक स्नैपशॉट संस्करण को दोबारा डाउनलोड करें मेरे पास मेरी build.sbt फ़ाइल में निम्न पंक्तियां हैं।एसबीटी

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

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

अब अगर स्नैपशॉट बदल गया है (यह उचित बिल्कुल है, कि उसकी संस्करण संख्या बदले बिना एक Maven स्नैपशॉट संस्करण परिवर्तन?), मैं कैसे एसबीटी बता नया संस्करण डाउनलोड कर सकते हैं? 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

आइवी एक 'मिलानिंग पैटर्न' को परिभाषित करता है जिसका उपयोग आप किसी रिज़ॉल्वर को परिभाषित करते समय कर सकते हैं। यह 'मिलान करने वाला' आपको कलाकृतियों के लिए एक पैटर्न (उदाहरण के लिए '" *-स्नैपशॉट "') परिभाषित करने की क्षमता देता है जो अंततः उस समय में बदल जाएगा। आपको 'ivyXML' सेटिंग का उपयोग करके इस विशेषता के साथ एक रिज़ॉल्यूवर को परिभाषित करने का प्रयास करना चाहिए, शायद एसबीटी इसे मान लेगा। – David

+7

कम से कम 0.12.1 में, आपको परिवर्तन निर्दिष्ट करने की आवश्यकता नहीं है: http://www.scala-sbt.org/release/docs/Detailed-Topics/Dependency- प्रबंधन- Flow.html अंतिम पंक्ति: "वहां SNAPSHOT निर्भरताओं को बदलने के रूप में चिह्नित करने की आवश्यकता नहीं है() क्योंकि एसबीटी पहले से ही यह जानने के लिए आइवी को कॉन्फ़िगर करता है। " –