मावेन विरूपण साक्ष्य और GroupId नामकरण


291

मैं वर्तमान में चींटी से मावेन के लिए कुछ परियोजना को आगे बढ़ाने की प्रक्रिया में हूं। अनुसारक के रूप में मैं कर रहा हूँ, मैं खोजने के लिए अच्छी तरह से स्थापित परंपराओं का उपयोग करना चाहते groupIdहैं और artifactIdहै, लेकिन मैं किसी भी विस्तृत सम्मेलनों नहीं मिल सकता है (वहाँ कुछ कर रहे हैं, लेकिन वे अंक मैं के बारे में सोच रहा हूँ को कवर नहीं है)।

उदाहरण के लिए इस परियोजना को लें, पहले जावा पैकेज: com.mycompany.teatimer

चाय टाइमर वास्तव में दो शब्द हैं, लेकिन जावा पैकेज नामकरण परंपराओं को अंडरस्कोर या हाइफ़न के सम्मिलन से मना करते हैं, इसलिए मैं यह सब एक साथ लिख रहा हूं।

मैंने groupIdपैकेज आईडी के समान चुना क्योंकि मुझे लगता है कि यह एक अच्छा विचार है। क्या यह?

अंत में, मुझे एक चुनना होगा artifactId, मैं वर्तमान में चला गया teatimer। लेकिन जब मैं अन्य मावेन परियोजनाओं को देखता हूं, तो वे artifactIdइस तरह शब्दों को विभाजित करने के लिए हाइफ़न का उपयोग करते हैं tea-timer:। लेकिन यह जब concatenated अजीब दिखता है groupId: com.mycompany.teatimer.tea-timer

आप यह कैसे करेंगे?

एक और उदाहरण:

पैकेज का नाम: com.mycompany.awesomeinhouseframework

groupId: com.mycompany.awesomeinhouseframework(?)

artifactId: awesome-inhouse-framework(?)


1
आप कहां देखते हैं GroupId को विरूपण साक्ष्य से जोड़ा गया है? मुझे लगता है कि आप जो सम्मेलन करते हैं, वे सही हैं।
अभिनव सरकार

2
दरअसल, जावा पैकेज नामों में अंडरस्कोर की अनुमति है, देखें: docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
एड्रियन कोस्टर

जवाबों:


146

आपका सम्मेलन उचित प्रतीत होता है। यदि मैं मावेन रेपो में आपके ढांचे की खोज कर रहा था, तो मैं समूह निर्देशिका awesome-inhouse-framework-x.y.jarमें com.mycompany.awesomeinhouseframeworkखोजूंगा। और मैं इसे आपके सम्मेलन के अनुसार ढूंढूंगा।

मेरे लिए दो सरल नियम काम करते हैं:

  • JavaI के नामों के संबंध में सभी बाधाओं के साथ GroupId के लिए रिवर्स-डोमेन-पैकेज (जैसे कि काफी अनोखे हैं)
  • प्रोजेक्ट का नाम विरूपण साक्ष्य के रूप में (यह ध्यान में रखते हुए कि यह जार-नाम के अनुकूल होना चाहिए अर्थात इसमें ऐसे अक्षर न हों जो शायद फ़ाइल नाम के लिए अमान्य हों या बस अजीब दिखें)

ठीक है, अगर आप और abhin4v को यह सामान्य लगता है, तो मैं इसे वैसे ही करूंगा, धन्यवाद!
नूरथ

मुझे नॉन-हाइफ़न (भययोग्य हाउसफ़्रेमवर्क) और हाइफ़न (ज़बरदस्त-इनडोर-फ्रेमवर्क) का मिश्रण थोड़ा अजीब लगता है। चूंकि ग्रुपिड हाइफ़न की अनुमति नहीं देता है, इसलिए मैं आर्टिफ़ाइड के लिए गैर-हाइफ़न वर्तनी के साथ भी चिपकूंगा।
माइकल कुलर

3
कृपया स्पष्ट करें कि "जार-नाम के अनुकूल" से आपका क्या अभिप्राय है?
विक्रमवी

1
जवाब में स्पष्ट किया :)।
हेनरिक कोन्सेक

241

घबराहट अत्यधिक व्यक्तिपरक है, मैं सिर्फ आधिकारिक सिफारिश का पालन करने का सुझाव देता हूं:

GroupId, विरूपण साक्ष्य और संस्करण पर नामकरण सम्मेलनों के लिए गाइड

  • groupIdसभी परियोजनाओं में विशिष्ट रूप से आपके प्रोजेक्ट की पहचान करेगा, इसलिए हमें नामकरण स्कीमा लागू करने की आवश्यकता है। इसे पैकेज नाम के नियमों का पालन करना होगा, इसका मतलब है कि कम से कम एक डोमेन नाम जिसे आप नियंत्रित करते हैं, और आप जितने चाहें उतने उपसमूह बना सकते हैं। पैकेज के नामों के बारे में अधिक जानकारी देखें

    जैसे। org.apache.maven,org.apache.commons

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

    जैसे। org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting

  • artifactIdसंस्करण के बिना जार का नाम है। यदि आपने इसे बनाया है, तो आप लोअरकेस अक्षरों के साथ जो भी नाम चाहें चुन सकते हैं और कोई अजीब प्रतीक नहीं। यदि यह थर्ड पार्टी जार है तो आपको जार का नाम लेना होगा क्योंकि यह वितरित है।

    जैसे। maven,commons-math

  • versionयदि आप इसे वितरित करते हैं तो आप संख्याओं और बिंदुओं (1.0, 1.1, 1.0.1, ...) के साथ कोई भी विशिष्ट संस्करण चुन सकते हैं। दिनांक का उपयोग न करें क्योंकि वे आम तौर पर SNAPSHOT (रात्रिकालीन) से जुड़े होते हैं। यदि यह एक तृतीय पक्ष विरूपण साक्ष्य है, तो आपको उनके संस्करण संख्या का उपयोग करना होगा जो कुछ भी है, और जितना अजीब लग सकता है।

    जैसे। 2.0, 2.0.1,1.3.1


4
मैं इन सम्मेलनों को जानता हूं, लेकिन वे वास्तव में यह नहीं कहते हैं कि कैसे विरूपण साक्ष्य नाम बनाया जाना चाहिए (कोई नामकरण परंपराएं नहीं हैं) और क्या करना है अगर यह ग्रुपआईड के समान होगा - मैंने एक भी पोम नहीं देखा है यह मामला कहां है
नूरथ

@ नोर्थ 1. कलाकृतियों का नाम आपके विवेक पर है (लेकिन नाम में हाइफ़न का उपयोग करना एक आम बात है)। 2. आप एक पूर्ण "नियम" की तलाश कर रहे हैं जो मौजूद नहीं है (क्या होगा यदि आपका भयानक इनडोर फ्रेम कई मॉड्यूल से बना है?)। उदाहरण के लिए देखें स्प्रिंग, मेवेन, हाइबरनेट आदि कलाकृतियां।
पास्कल थिवेंट

नहीं, नहीं, मेरे पास कोई मॉड्यूल नहीं है, बस सरल परियोजनाएं हैं। वास्तव में, हमारे पास "भययोग्य
इनडोर

11
किस बारे में package? GroupId में क्या अंतर है?
कोनस्टेंटिनके

1
क्या ArtIId को इसमें नंबर रखने की अनुमति है?
Theonlygusti

100

बुनियादी पहले मावेन एप्लिकेशन के निर्माण के लिए निम्नलिखित पर विचार करें :

groupId

  • com.companyname.project

artifactId

  • परियोजना

version

  • 0.0.1

भाड़े के लिए एक काम के com.my.company.projectरूप में मैं groupIdया के रूप में उपयोग करना चाहिए com.client.company.project?
जियाको अल्जेटा

@GiacomoAlzetta आप किसी भी ऐसे फॉर्मेट सूट का उपयोग कर सकते हैं जो आपको बेहतर लगे। कुछ उदाहरण 'com.companyName.hirePortal' या 'org.compnayName.hirePortal'।
मानवल

3
groupId com.companyname होना चाहिए com.companyname.project नहीं
कामिल नेकानोविच

1

हालाँकि, मैं GroupId, विरूपण साक्ष्य, और संस्करण पर सम्मेलनों के नामकरण के लिए गाइड की आधिकारिक परिभाषा से असहमत हूं जो समूह का प्रस्ताव करता है समूह को उलट डोमेन नाम से शुरू करना चाहिए जिसे आप नियंत्रित करते हैं।

comइसका मतलब है कि यह परियोजना एक कंपनी से संबंधित है, और orgइसका मतलब है कि यह परियोजना एक सामाजिक संगठन से संबंधित है। ये ठीक हैं, लेकिन उन अजीब डोमेन जैसे xxx.tv, xxx.uk, xxx.cn के लिए, इसका मतलब यह नहीं है कि ग्रुपआईडी का नाम "टीवी", "सीएन" के साथ शुरू किया गया है, ग्रुपआईड को मूल जानकारी वितरित करनी चाहिए। डोमेन के बजाय परियोजना का।


2
यह अधिवेशन डेवलपर्स को मावेन का उपयोग करने से रोक रहा है, क्योंकि आपको अपनी कलाकृतियों को केंद्रीय मावेन भंडार में तैनात करने से पहले एक डोमेन होना चाहिए। यह हास्यास्पद है। एक डोमेन रखने पर साल-दर-साल बहुत अधिक लागत आ सकती है।
टॉमी। टैंग

1
नहीं है कोई वास्तव में पंजीकरण है करने के लिए आवश्यकता है कि डोमेन नाम के लिए। केवल आवश्यकता यह है कि आपका ग्रुप आईडी, जो आपके जावा पैकेज का नाम होगा, तैनात किए जाने पर किसी अन्य ऐसे नाम के साथ संघर्ष नहीं। यह सम्मेलन निश्चित रूप से डेवलपर्स को मावेन का उपयोग करने से नहीं रोक रहा है।
बेसिल बोर्क

एक अच्छा अभ्यास रिपॉजिटरी URL से पैकेज नामों को प्राप्त करना है। यदि आप GitHub का उपयोग कर रहे हैं, तो आपके खाते को कॉल किया जाता है myuserऔर आपकी रिपॉजिटरी को कॉल किया जाता है myrepo, तो बस पैकेज नाम का उपयोग करें com.github.myuser.myrepo। यह मुफ़्त है और अभी भी अद्वितीय है।
fxnn

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.