2013-10-08 11 views
21

मैं एक JSON एक्सटेंशन का उपयोग कर रहा हूं जो मंडुबियन के प्ले-जेसन 2.2-स्नैपशॉट पर निर्भर करता है। सब कुछ ठीक काम करता है अब तक मेरे पास स्कैला-एसटीएम पर आधारित एक परियोजना है। एसबीटी निम्नलिखित समस्या की रिपोर्ट करता है:विवादित क्रॉस-वर्जन प्रत्यय (एसबीटी, स्कैला-एसटीएम, प्ले-जेएसओएन)

[error] Modules were resolved with conflicting cross-version suffixes 
     in {file:folder}project: 
[error] org.scala-stm:scala-stm _2.10, _2.10.0 
java.lang.RuntimeException: Conflicting cross-version suffixes in: 
    org.scala-stm:scala-stm 

क्या इन दो "विरोधाभासी" संस्करणों से गहराई से खोदने का कोई मौका है? मुझे आश्चर्य है कि प्ले-जेसन स्कैला-एसएमएम के आधार पर होना चाहिए ?!

इसके अलावा, एसबीटी को बंद करने के लिए मनाने का कोई तरीका है ... ऊपर। क्योंकि स्पष्ट रूप से 2.10 और 2.10.0 बराबर संस्करण हैं।


संपादित: यह एक एसबीटी 0.13 बग प्रतीत हो रहा है (और शायद प्ले-JSON के साथ कोई संबंध नहीं है), क्योंकि अगर मैं 0.12.4 करने के लिए वापस, परियोजना को सफलतापूर्वक अपडेट हो जाता है और बनाता है। मैं अभी भी एसबीटी 0.13 के लिए एक काम में रुचि रखते हैं।

+0

मंडुबियन के प्ले-जेसन स्नैपशॉट का उपयोग करने के बजाय, क्यों न केवल इस निर्भरता - '" play% "play_2.10"% "2.1.0" मेरे प्रश्न के अनुसार - http://stackoverflow.com/questions/19436069/add-play-json-library-to-sbt –

+0

मुझे यकीन नहीं है कि यह एक बग है। मैंने इस समस्या को अपग्रेड करने के बाद भी देखा, लेकिन फिर पता चला कि लाइब्रेरी के दो अलग-अलग संस्करण इस्तेमाल किए जा रहे थे। यह उपयोगी हो सकता है मुझे लगता है कि इसे एक चेतावनी में बदलना है। –

उत्तर

21

आप इस के आसपास स्केला-एसटीएम को हटाने के द्वारा प्राप्त कर सकते हैं के साथ बाहर निकालने के

"dependencyGroupId" %% "dependencyArtifactId" % "dependencyVersion" exclude("org.scala-stm", "scala-stm_2.10.0") 

sbt clean करने के लिए मत भूलना।

+0

बढ़िया, काम किया। 'बहिष्कार' विधि के बारे में जानना अच्छा है! –

+2

मैं इसे अपने 'play' ऐप में कहां जोड़ूं? मुझे लगता है कि' Build.scala', लेकिन अंदर इसकी एक नई बनाई गई परियोजना के लिए –

+1

'Build.scala' (2.1.x चलाएं, 2.2 के रूप में Build.scala का उपयोग नहीं करता है) में वेरिएबल 'वैल ऐप पर निर्भरता' है जिसमें निर्भरता वाले 'सेक' शामिल है। इसके अंदर। – kompot

2

अपडेट किया गया प्ले 2 2.2 - 0.13.0 से एसबीटी में डाउनग्रेडिंग -> 0.12.4 मेरे साथ काम नहीं किया, लेकिन सभी पर बहिष्कृत ("org.scala-stm", "scala-stm_2.10.0") का उपयोग करके छोड़कर ऐप-विशिष्ट निर्भरताओं मैंने ठीक काम किया था - वैसे भी - मेरी निर्भरताओं में से कोई भी स्कैला-एसएम के साथ कुछ भी नहीं करना चाहिए।

+0

में वर्णित है तो क्या आप कह रहे हैं कि आपके पास Play 2.2 के साथ एक ही समस्या है? –

+0

बिल्कुल। समस्या तब हुई जब मैं Play2 2.1 से 2.2 तक स्विच कर रहा था, इससे पहले कि यह 0.12.4 और प्ले 2 2.1 –

2

यदि आप अपने एसबीटी परियोजना में सभी पुस्तकालयों को खींचने के लिए देखना चाहते हैं, तो आप SBT dependency graph प्लगइन का उपयोग कर सकते हैं।

इसका उपयोग करके, आप देख सकते हैं कि स्कैला-एसएम क्यों खींचा जा रहा है, और अन्य विरोधी स्केल 2.10 और 2.11 निर्भरताओं की जांच भी करें।

+0

के साथ ठीक था, धन्यवाद, मेरे पास अब यह प्लगइन वैश्विक स्तर पर स्थापित है और इसका बहुत उपयोग है। एक अच्छी सिफारिश है। –

+0

जो अच्छा होगा। लेकिन इस प्लगइन ने मेरे लिए काम नहीं किया: "net.virtualvoid.sbt.graph.plugin.graphSettings ' – jsky

+0

@jsky उस पंक्ति में/प्रतीक/निर्माण के बजाय /build.sbt में होना चाहिए, "प्रतीक वर्चुअल को हल नहीं कर सकता"। एसबीटी। क्या यह आपके निर्माण में मामला है? या यहां उल्लिखित वैकल्पिक दृष्टिकोण का उपयोग करें: https://github.com/jrudolph/sbt- निर्भरता-graph#how-to-use –