2013-02-20 12 views
23

मैं समझता हूँ कि कैसे Gradle एक '+' चिन्ह के साथ निर्भरता संस्करणों हैंडल के रूप में उदाहरण के 8.1 यहाँ में देखा कोशिश कर रहा हूँ: http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.htmlGradle निर्भरता संस्करणों '+' चिन्ह

testCompile group: 'junit', name: 'junit', version: '4.+ 

प्रलेखन कहा गया है कि इस मिल जाएगा जूनिट का एक संस्करण> = 4.0। एक निर्भरता का संस्करण कैसे प्राप्त होगा (या बराबर), कहें, 5.10? क्या यह 5.10+ या 5.1+ होगा? ऐसा लगता है कि पूर्व सही ढंग से काम नहीं करता है, लेकिन बाद वाला करता है। मैं 1.22 से अधिक या बराबर निर्भरता कैसे प्राप्त करूं? 1.2+? इस परिदृश्य में, यदि संस्करण 1.21 मौजूद है और नवीनतम संस्करण है, तो मैं असफल होना चाहता हूं, क्योंकि मैं 1.22 से अधिक या बराबर चाहता हूं, लेकिन 1.2+> = 1.20 के लिए देखेगा। मैं इसे कैसे निर्दिष्ट कर सकता हूं? क्या यह संभव है? मुझे इस पर अधिक दस्तावेज नहीं मिल रहा है।

संपादित करें: मुझे लगता है कि 1.2+1.2([0-9]+) के बराबर है। क्या यह सोचने का सही तरीका है?

उत्तर

22

इस परिदृश्य में, संस्करण 1.21 मौजूद है और नवीनतम संस्करण है अगर, मैं विफल, के बाद से मैं से अधिक या 1.22 के बराबर चाहते हैं चाहते हैं, लेकिन 1.2+> = 1.20 के लिए दिखेगा। मैं इसे कैसे निर्दिष्ट कर सकता हूं? क्या यह संभव है?

मुझे नहीं लगता कि इस बारे में कोई प्रलेखन वहाँ है, लेकिन Gradle के बाद से मूल रूप से अपने सभी निर्भरता प्रबंधन कार्यक्षमता के लिए हुड के नीचे आइवी इस्तेमाल किया है, मैं गतिशील संस्करणों के बारे में आइवी प्रलेखन पर एक दृष्टि डाली:

http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html

इसमें ग्रैडल दस्तावेज़ों की तुलना में केवल थोड़ा अधिक है। मैं आइवी शैली संस्करण सीमाओं के साथ Gradle में प्रयोग करने की कोशिश की:

compile group: 'log4j', name: 'log4j', version: '[1.2.12,1.2.17]' 

और आश्चर्यजनक रूप से यह कौन-सा संस्करण सीमा है पर निर्भर करता है के लिए कभी कभी काम लगता है। ऊपर दिए गए उदाहरण में यह 1.2.17 पर हल हो जाता है।

मुझे पता है कि यह आपके प्रश्नों को पूरी तरह से संबोधित नहीं करता है (जो मैं भी उत्सुक हूं) लेकिन उम्मीद है कि यह आपके लिए थोड़ी सी जानकारी प्रदान करेगी।

+3

अह्ह्ह आइवी! मैंने इसके बारे में कुछ के लिए मेवेन दस्तावेज़ खोजना जारी रखा। http://ant.apache.org/ivy/history/trunk/settings/version-matchers.html मुझे लगता है कि उप-संशोधन मैचर क्या हो रहा है? –

1

मुझे लगता है कि मुद्दा यह है कि आप रेगेक्स के मामले में गलत तरीके से "+" के बारे में सोच रहे हैं। यह रेगेक्स अभिव्यक्ति तत्व ("एक या अधिक संख्यात्मक वर्ण") के रूप में पढ़ने के लिए नहीं है, बल्कि "नवीनतम उपलब्ध संस्करण जहां" प्रत्येक प्रमुख सेमवर घटक प्रदान किए गए पैटर्न से मेल खाते हैं "। इस नोटेशन का उपयोग करने के लिए इसे क्यों पसंद नहीं किया जा रहा है, इस पर संदर्भ: http://central.sonatype.org/articles/2014/Oct/28/enforcing-valid-dependency-versions/

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