2015-08-24 3 views
5

अपाचे कॉमन्स कई विभिन्न पुस्तकालयों का एक सेट है। मेवेन सेंट्रल रिपोजिटरी पर उनके पास समूह आईडी के लिए दो अलग-अलग नामकरण सम्मेलन हैं, परियोजना के आधार पर, उदा।परियोजना के आधार पर अपाचे कॉमन्स पुस्तकालयों में असंगत समूह आईडी क्यों हैं?

    के लिए कॉमन्स लैंग
  • , कॉमन्स कम्प्रेस, कॉमन्स वीवर - 'org.apache.commons'
  • के लिए कॉमन्स CLI, कॉमन्स आईओ - 'commons-[library_name]'

उन दोनों के बीच क्या अंतर है?

उत्तर

6

commons-[library_name] नामकरण सम्मेलन पुराना, विरासत सम्मेलन है। org.apache.commons -स्टाइल नाम डोमेन नामों पर समूह समूह आईडी के current operating convention का पालन करते हैं। सम्मेलन की स्थापना के बाद सभी अपाचे परियोजनाएं शुरू हुईं, जो कि org.apache.* रूप का समूह है। सम्मेलन से पहले शुरू की गई कुछ परियोजनाओं की स्थापना उनके समूह आईडी बदल गई, जबकि अन्य ने नहीं किया।

मैवेन के इतिहास में कुछ समय पहले, नाम टकराव से बचने के लिए मेवेन सेंट्रल में सभी परियोजनाओं में सार्वभौमिक अद्वितीय समूह आईडी को लागू करने की स्पष्ट आवश्यकता थी। यह सुनिश्चित करने का एक आसान तरीका है कि एक सम्मेलन स्थापित करना था जहां परियोजना लेखकों को केवल उस डोमेन नाम से समूह आईडी का उपयोग कर सकता था, जिसे वे नियंत्रित करते हैं। इसलिए Apache संगठन से फॉर्म org.apache.* के समूह आईडी।

हालांकि, कई परियोजनाएं पहले ही सम्मेलन का पालन नहीं करतीं, और changing the groupId is not as trivial as it sounds। मुख्य कारण यह है कि यदि पुराने और नए समूह दोनों एक विशेष परियोजना की निर्भरता हैं, तो दोनों कलाकृतियों को शामिल किया जाएगा, और फिर आपके पास एक ऐसा मामला है जहां आपके पास अलग-अलग कलाकृतियों को समान कक्षाएं प्रदान की जा रही हैं, जो एक क्लासलोडिंग दुःस्वप्न है।

कुछ परियोजनाएं समूह के साथ पैकेज नाम को बदलकर नए सम्मेलन में बदल गईं, जैसे Commons Lang did। हालांकि, पैकेज नाम को बदलना आम तौर पर बहुत विघटनकारी माना जाता है, इसलिए कॉमन्स लैंग ने इसे असंगत एपीआई परिवर्तनों के साथ ही किया। कॉमन्स आईओ जैसे अन्य प्रोजेक्ट्स के पास discussions और back-and-forth था, लेकिन आखिरकार स्विच बनाने के लिए कभी नहीं मिला, क्योंकि पुरानी शैली का नाम वास्तव में किसी को भी चोट नहीं पहुंचा रहा है।

इसलिए आज ज्यादातर अपाचे परियोजनाएं org.apache.* रूप में हैं, लेकिन अभी भी कुछ ऐसे नहीं हैं।

+0

'commons-io' वास्तव में अजीब है: ऐसा लगता है कि [दूसरे तरीके से चला गया] (http://mvnrepository.com/artifact/org.apache.commons/commons-io) (' org.apache.commons '-> 'कॉमन्स-io')। – z0r

+1

स्पष्ट रूप से 'commons-io: 1.3.2' के लिए एक [गलत तैनाती] (https://issues.sonatype.org/browse/MVNCENTRAL-244) था जिसके कारण सटीक पीओएम और जार दोनों संगठनों को तैनात किए गए थे .apache.commons: commons-io: 1.3.2' * और * 'commons-io: commons-io: 1.3.2'। (हो सकता है कि किसी ने गलती से सोचा कि यह नए सम्मेलन में जाने का एक सुरक्षित तरीका था?) उन्होंने ['org.apache.commons' POM] को बदलकर इसे हल किया (https://repo1.maven.org/maven2/org/apache /commons/commons-io/1.3.2/commons-io-1.3.2.pom) 'commons-io' संस्करण पर इंगित करने के लिए)। – heenenee

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