2013-07-04 5 views
92

मैं खेलने के लिए नया हूं! फ्रेमवर्क 2.1 (जावा संस्करण) और स्कैला के साथ कोई अनुभव नहीं है। मुझे समझ में नहीं आता कि % और %% Build.scala में क्या है और क्या मतलब है। मैंने उनके बारे में गुमराह किया लेकिन उनका अर्थ नहीं मिला।Build.scala,% और %% प्रतीकों का अर्थ

मेरी Build.scala फ़ाइल में मेरे पास है:

"org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final", 
"com.typesafe" %% "play-plugins-mailer" % "2.1" 

क्यों पहली पंक्ति एक एकल% प्रतीक का उपयोग करता है और दूसरा एक दो प्रतिशत प्रतीकों %% का उपयोग करता है? वे क्या हैं?

उत्तर

114
आधिकारिक दस्तावेज से

:

http://www.playframework.com/documentation/2.1.1/SBTDependencies

%%

के साथ सही स्काला संस्करण हो रही है आप groupID % artifactID % revision के बजाय groupID %% artifactID % revision का उपयोग करते हैं (अंतर दोगुना है groupID) के बाद ई %%), एसबीटी आपके प्रोजेक्ट के स्कैला संस्करण को आर्टिफैक्ट नाम में जोड़ देगा। यह सिर्फ एक शॉर्टकट है।

आप %% के बिना इस लिख सकते हैं:

val appDependencies = Seq(
    "org.scala-tools" % "scala-stm_2.9.1" % "0.3" 
) 

scalaVersion मान लिया जाये कि के लिए अपने निर्माण 2.9.1 है, तो निम्न समान होता है:

val appDependencies = Seq(
    "org.scala-tools" %% "scala-stm" % "0.3" 
) 

आप ऊपर देख सकते हैं, अगर आप %% का उपयोग करें, आपको संस्करण निर्दिष्ट करने की आवश्यकता नहीं है।

+1

"आपकी परियोजना का स्कैला संस्करण" का अर्थ SettingKey 'scalaVersion' का मान है। –

+1

मुझे नहीं लगता कि मेरे अतिरिक्त प्रश्न के लिए एक अलग SO प्रश्न उठाना आवश्यक है: मैं _not_ %% का उपयोग कब करना चाहूंगा? मेरे लिए ऐसा लगता है कि यह 'बेहतर' है और हमेशा इस्तेमाल किया जाना चाहिए .... –

+3

@ पीटरपेरैक आप उन कलाकृतियों के साथ '%%' का उपयोग नहीं कर सकते हैं जिनमें स्कैला संस्करण (जैसे शुद्ध जावा पुस्तकालय) शामिल नहीं है। – Toxaris

17

यह एसबीटी का हिस्सा है जो बिल्ड टूल के रूप में उपयोग करता है। विशेष रूप से यह एक आयात कथन है।

प्रतिशत प्रतीक % वास्तव में निर्भरता बनाने के लिए उपयोग की जाने वाली एक विधि है। डबल प्रतिशत संकेत %% वर्तमान स्कैला संस्करण इंजेक्ट करता है - यह आपको स्केल के संस्करण के लिए सही लाइब्रेरी प्राप्त करने की अनुमति देता है। जब आप स्कैला अपडेट करते हैं तो अपनी बिल्ड फ़ाइल को बदलने से बचने के लिए यह है।

अधिक जानकारी here

संबंधित मुद्दे