2009-05-05 18 views
6

मान लीजिए कि आपके पास एक परियोजना है जो तृतीय पक्ष लाइब्रेरी का उपयोग कर रही है, जैसे कि Google's Analytics Data API (gdata), जो वर्तमान में किसी भी प्रसिद्ध या लोकप्रिय मेवेन सार्वजनिक भंडार/अनुक्रमणिका में तैनात नहीं है। यह एक समस्या का अधिक नहीं है, क्योंकि मैं अपने स्थानीय होस्ट किए गए नेक्सस भंडार में केवल आर्टिफैक्ट को तैनात कर सकता हूं।अपने होस्टेड मेवेन रिपोजिटरी में तृतीय पक्ष पुस्तकालयों को स्थापित करने के लिए सर्वोत्तम अभ्यास?

लेकिन, क्या मैवेन समुदाय में कोई भी सर्वोत्तम प्रथा है कि मुझे अपने पीओएम में इस पुस्तकालय के "निर्देशांक" का नाम कैसे देना चाहिए, क्योंकि मानक पहले से ही सार्वजनिक भंडार में स्थापित नहीं है?

उदाहरण के लिए, मैं

<dependency> 
    <groupId>com.google</groupId> 
    <artifactId>gdata-analytics</artifactId> 
    <version>1.0</version> 
</dependency> 

के रूप में मेरे पोम को देखना चाहिए या वहाँ कुछ बेहतर/अधिक मानक तरीका मुझे artifactId साथ आने के लिए के लिए है?

(और, क्यों बिल्ली गूगल जैसे कुछ दर्जन पुस्तकालयों की एक प्रदाता कुछ प्रयास ले नहीं होगा उन्हें मिल मुख्यधारा सार्वजनिक Maven खजाने/अनुक्रमित में की मेजबानी के लिए? इस उन लोगों का उपयोग करने के लिए नहीं बना सकते हैं उन्हें और इस प्रकार गोद लेने के लिए ड्राइव?)

उत्तर

3

आपने जो किया है वह काफी उचित है। कुछ अतिरिक्त अंक:

  • जब Maven नेक्सस से एक विरूपण साक्ष्य प्राप्त है, विरूपण साक्ष्य artifactId-संस्करण के रूप में नामित किया गया है। GroupId कष्टप्रद छोड़ दिया गया है। इसलिए, जब आर्टिफैक्ट चारों ओर स्थानांतरित हो जाता है (कहें, वेब ऐप में वेब-आईएनएफ/lib में कॉपी किया गया है), तो आपकी जार फ़ाइल "gdata-analytics-1.0" पढ़ेगी। यह आमतौर पर एक समस्या नहीं है। हालांकि, अगर आर्टिफैक्ट नाम बहुत आम है, जैसे "उपयोग", तो आप artifactId के अंदर समूह जानकारी शामिल करना चाहेंगे, जैसे "com.google" के समूह आईडी का उपयोग करना और "com.google.gdata- का एक आर्टिफैक्ट आईडी विश्लेषण "। हां, प्रतिशोध कष्टप्रद है, लेकिन यह फ़ाइल सिस्टम और खोजों में अधिकतम स्पष्टता उत्पन्न करता है। मुझे वास्तव में एक समस्या है जहां दो अलग-अलग समूह आईडी दोनों के पास "कोर-1.0" जार था, और बिल्ड समय पर lib निर्देशिका में कॉपी होने पर एक दूसरे को ओवरराइट करता था।

  • मैं अपने मैवेन संस्करण को संरेखित करने के दूसरे मैटके के सुझाव के साथ आर्टिफैक्ट को जो भी संस्करण जानता हूं, उसके साथ आमतौर पर जाना जाता है।

  • यदि आप समूह के उपसर्ग की डोमिनिक की सलाह का पालन करते हैं तो अपनी कंपनी के नाम (जैसे एसीएम) के साथ, यह नेक्सस की रूटिंग सुविधा का लाभ लेना आसान बना सकता है। यह सुनिश्चित करना है कि आंतरिक कलाकृतियों के लिए अनुरोध Maven सेंट्रल बाहर प्रचारित नहीं कर रहे हैं और उनके लॉग में अंत (जो महत्वपूर्ण हो सकता है अगर आपके ग्रुप "acme.secret.project" है होगा!

+0

सभी अच्छे सुझाव - यही कारण है कि मैंने यह जवाब स्वीकार कर लिया। बीटीडब्लू, जिसे Google द्वारा वितरित किया गया था, जिसे पहले से ही "gdata-analytics-1.0.jar" नाम दिया गया था, जहां मैंने अपना आर्टिफैक्ट और संस्करण संख्या लिया था। अच्छा प्यार जार-नामकरण –

3

मैं लगभग एक साल तक मेवेन का उपयोग कर रहा हूं और कभी भी "मानक" नामकरण सम्मेलन में नहीं चला हूं। मैं आमतौर पर वही करता हूं जो आप कर रहे हैं, हालांकि मैं संस्करण संख्या को यथासंभव "वास्तविक" संस्करण संख्या के करीब बनाने की कोशिश करता हूं, अगर मैं एकाधिक संस्करणों को तैनात करता हूं तो भ्रम से बचने के लिए।

+0

यह वही है जो मैंने किया - लेकिन फीडबैक के लिए धन्यवाद –

2

मेरे पास समूह के उपसर्ग को अपनी सामान्य समूह आईडी के साथ बदलने की प्रवृत्ति है। इससे यह बिल्कुल स्पष्ट हो जाता है कि यह कुछ ऐसा है जो मैंने अपलोड किया है, बस अगर यह दुनिया में बड़े पैमाने पर निकलता है।

0

कई sourceforge प्रोजेक्ट समूह के समूह में परियोजना का नाम उपयोग करते हैं, उदाहरण के लिए:

GroupId net.sf.जेसन-लिब आर्टिफैक्टआईड जेसन-लिब

यह Google उदाहरण में उपयुक्त हो सकता है, क्योंकि बहुत सारे Google कलाकृतियों हैं।

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

0

आप भाग्य में हो सकते हैं: Google की अपनी परियोजनाओं के लिए अपना स्वयं का मेवेन रेपो है। यह पृष्ठ देखें: Instructions

मेरे पास कुछ जार फ़ाइलें थीं जो प्रोपेटरी थीं, इसलिए मुझे उन्हें प्रत्येक वर्कस्टेशन पर लोड करना पड़ा (हमारे पास अभी तक कंपनी को रेपो साझा नहीं किया गया है)। मैंने उन्हें एक/lib निर्देशिका में स्रोत कोड पेड़ में रखा है (हमेशा एक अच्छा विचार नहीं), और एक छोटी बीएटी फ़ाइल (या .sh स्क्रिप्ट) जो एमवीएन इंस्टॉल-फाइल कमांड को मेरे स्थानीय मशीन के रेपो को लोड करने के लिए पहले रखती है समय मैं निर्माण करता हूँ। अगर मुझे कभी भी इन जारों को अपडेट करना है, तो मैं "load.bat" फ़ाइल भी अपडेट करूंगा, और इसे फिर से चालू कर दूंगा। मेरे परिस्थिति में, मुझे उम्मीद है कि साल में एक से अधिक बार होने की उम्मीद न हो, शायद कम।

+0

धन्यवाद - लेकिन यह रेपो मेरे लिए बहुत वर्तमान नहीं दिखता है। मेरे मूल पोस्ट में वर्णित आर्टिफैक्ट वहां नहीं है। –

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

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