2009-08-14 7 views
22

के लिए मेवेन रिपोजिटरी मैं Google Code पर एक छोटी ओपन सोर्स प्रोजेक्ट होस्ट कर रहा हूं, और मुझे जार को सार्वजनिक रूप से सुलभ मेवेन रिपोजिटरी में सबमिट करने के लिए कहा गया है। मेरे पास मेवेन का लगभग कोई व्यावहारिक ज्ञान नहीं है। क्या सबसे अच्छा तरीका होगा यह करने का?Google Code प्रोजेक्ट

क्या कोई केंद्रीय भंडार है जिसे मैं सबमिट कर सकता हूं, या मैं अपना खुद का आयोजन कर सकता हूं? जब मैं जार का एक नया संस्करण जारी करना चाहता हूं तो मुझे क्या करना होगा?

मैं गुगलिंग कर रहा हूं और this पाया, जो अच्छा और सरल दिखता है, लेकिन ऐसा लगता है ... मैवेन की भावना के विपरीत, एसवीएन को जार फाइलें करने के लिए :)।

इसके अलावा, क्या Google Code के रूप में डाउनलोड गिनती का ट्रैक रखने का कोई तरीका होगा?

संपादित

मैं कुछ जवाब हो रही किया गया है, जो कि मेरी pom.xml में जोड़ने के लिए पर संकेत युक्त हैं। धन्यवाद दोस्तों! लेकिन जाहिर है, मैं एक महत्वपूर्ण बात का उल्लेख करना भूल गया: मेरी बिल्ड स्क्रिप्ट एएनटी में है, और इसे स्पष्ट रूप से रखने के लिए, मैं इसे इस तरह से रखना चाहता हूं :)। मैं सिर्फ मैवेन उपयोगकर्ताओं के लिए अपनी परियोजनाओं में अपने जार को शामिल करना आसान बनाना चाहता हूं।


समाधान मैं अंत

अंत में में साथ चला गया, मैं समाधान का उपयोग किया था मैं referenced से पहले, जहाँ मैं बस SVN करने के लिए एक Maven रेपो के लिए प्रतिबद्ध। मेरे पास स्थानीय रेपो सेट अप करने के लिए एएनटी स्क्रिप्ट कॉल मेवेन है, और फिर इसे Google Code पर प्रतिबद्ध करने के लिए एसवीएन को कॉल करें। रुचि रखने वालों के लिए: publish-maven लक्ष्य में, मेरी बिल्ड स्क्रिप्ट here देखें।

+0

कौन सा खुला स्रोत प्रोजेक्ट है है जिस तरह से? –

+0

@ बोनो http://code.google.com/p/equalsverifier/ – jqno

+0

thx देखें, वास्तव में अच्छा लगता है! –

उत्तर

24

एक guide to the central repository परियोजनाओं में मदद मिल सकती है कि अपलोड करने पर एक अनुभाग है कि नहीं है। यदि कुछ और नहीं है तो आप अपने प्रोजेक्ट के खिलाफ नामकरण सम्मेलनों और न्यूनतम सूचना आवश्यकताओं की जांच कर सकते हैं।

सोनाटाइप ओएसएस रिपोजिटरी होस्टिंग भी करता है, विवरण के लिए their guide देखें।

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

मूल रूप से, आप 4 विकल्प हैं:

  1. एक मानक Maven एक Maven भंडार (पहले से ही की संभावना से इनकार)
  2. एक Maven भंडार सेट अप के खिलाफ निर्माण को पूरा करें, चींटी के साथ अपने बनाता है, और का उपयोग Maven करने के लिए जार और पीओएम तैनात करें।
  3. एक Maven भंडार स्थापित, विज्ञापन एक चींटी HTTP कार्य का उपयोग कलाकृतियों
  4. उपयोग एक सबवर्सन "भंडार" प्रकाशित करने के लिए, और कलाकृतियों को प्रकाशित करने के SvnAnt कार्य का उपयोग

विकल्प 1

कलाकृतियों को बनाने और तैनात करने के लिए मेवेन का उपयोग करें (Maven book और विवरण के लिए उपरोक्त लिंक देखें)।


विकल्प 2

मान लें कि आप एक निर्माण प्रक्रिया है कि अपने जार बनाता है, और आप पोम परिभाषित किया है, आपका सर्वश्रेष्ठ दांव Sonatype ओएसएस भंडार करने के लिए यह रूप में ऊपर प्रकाशित करने के लिए है।

एक मानक Maven भंडार के लिए एक मौजूदा जार नियोजित करना सरल है Maven साथ प्लगइन की तैनाती-फ़ाइल लक्ष्य को तैनात:

  1. बिल्ड (एक Jira request बढ़ाकर Sonatype सर्वर पर जैसे) अपने भंडार को सेट करें चींटी के साथ आपका जार।
  2. यदि आपने पीओएम परिभाषित किया है, तो इसे जार के समान निर्देशिका में रखें।
  3. भागो तैनाती फ़ाइल लक्ष्य:

    mvn तैनाती: तैनात फ़ाइल -Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -Dfile = पथ-टू-अपने-विरूपण साक्ष्य-जार \ - DpomFile = पथ-टू-अपने-pom.xml

ध्यान दें कि Maven लक्ष्य आप [परियोजना नाम] को pom.xml अनुवाद करेगा तैनात - [संस्करण] .pom। यदि आप अन्य दो विकल्पों में से किसी एक को कर रहे हैं, तो आपको यह सुनिश्चित करना होगा कि आप अंतिम नाम के साथ पीओएम प्रतिबद्ध करें, यानी [प्रोजेक्ट-नाम] - [संस्करण] .pom। आपको यह सुनिश्चित करने की भी आवश्यकता होगी कि आप मेवेन सम्मेलनों के बाद कलाकृतियों के सापेक्ष पथ तैयार करें।

उदा। ग्रुप = com.foo.bar, artifactId = मेरी परियोजना संस्करण = 1.0.0 के लिए, फ़ाइलों के लिए पथ हो जाएगा:

/com/foo/bar/my-project/my-project-1.0.0.jar 
/com/foo/bar/my-project/my-project-1.0.0.pom 

विकल्प 3

आप चाहते हैं एक मैवेन रिपॉजिटरी में तैनात करने के लिए चींटी का उपयोग करें, आप Ant HTTP library (नोट मैंने इसे स्वयं नहीं किया है) का उपयोग कर सकते हैं। आप दो HTTP डाल कार्यों को लिखेंगे, एक जार के लिए और एक पीओएम के लिए।

<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.pom"> 
    <userCredentials username="user" password="password"/> 
</httpput> 
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.jar"> 
    <userCredentials username="user" password="password"/> 
</httpput> 

विकल्प 4

आप Maven पूरी तरह से बचने और एक SVN समर्थित भंडार को तैनात करने के लिए चींटी का उपयोग करना चाहते हैं, तो आप SvnAnt Subversion library उपयोग कर सकते हैं। रिमोट सबवर्जन रिपोजिटरी में अपनी कलाकृतियों को जोड़ने के लिए आपको Svn import कार्य को कॉन्फ़िगर करने की आवश्यकता होगी।

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository" 
    message="release"/> 
+0

धन्यवाद, यह पोस्ट काफी उपयोगी था। – javamonkey79

1

जांचें कि मेवेन रिपॉजिटरी समर्थन maven deploy plugin है या नहीं। यह सबसे आसान तरीका होगा।

अधिकांश भंडार परिवहन के रूप में एसएसएच का उपयोग करते हैं। विवरण के लिए this देखें।

यह सेटअप हो जाने पर, तुम सब करने की है:

mvn deploy:deploy 
+0

धन्यवाद! दिलचस्प लग रहा है। दुर्भाग्यवश, मेरी बिल्ड स्क्रिप्ट एएनटी में है। मुझे नहीं लगता कि एएनटी के लिए एक समान प्लगइन है :)? – jqno

7

वैगन-एसवीएन जांचें। यह आपको एक सबवर्जन रिपोजिटरी में 'तैनाती' करने की अनुमति देगा। यह थोड़ा शांत है, लेकिन यह कुछ भी नहीं है। मुझे कुछ परियोजनाओं के बारे में पता है जो इसे java.net पर उपयोग करते हैं, और मैं code.google.com पर इसका उपयोग करके कुछ परियोजनाओं में भी आया हूं।

आप इसका इस्तेमाल करना चाहते हैं, तो आपको सबसे पहले एक विस्तार के रूप वैगन-svn लोड करने के लिए की जरूरत है: प्रोटोकॉल पहचानकर्ता:

<build> 
    ... 
    <extensions> 
     <extension> 
     <groupId>org.jvnet.wagon-svn</groupId> 
     <artifactId>wagon-svn</artifactId> 
     <version>...</version> 
     </extension> 
    </extensions> 

इसके बाद, आप SVN का उपयोग कर अपने तैनाती लक्ष्य निर्धारित करने की जरूरत है। यहां एक उदाहरण दिया गया है जिसे मैंने इंटरनेट से कॉपी किया है।

<distributionManagement> 
    <repository> 
     <id>maven-config-processor-plugin-repo-releases</id> 
     <name>Maven Repository for Config Processor Plugin (releases)</name> 
     <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/releases</url> 
     <uniqueVersion>false</uniqueVersion> 
    </repository> 
    <snapshotRepository> 
     <id>maven-config-processor-plugin-repo-releases</id> 
     <name>Maven Repository for Config Processor Plugin (snapshots)</name> 
     <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/snapshots</url> 
     <uniqueVersion>false</uniqueVersion> 
    </snapshotRepository> 
</distributionManagement> 
+0

ताकि मेरे प्रश्न में उल्लिखित ब्लॉग पोस्ट के बाद, एसवीएन को तैनाती प्रक्रिया स्वचालित कर दे, है ना? मुझे नहीं लगता कि एएनटी के लिए ऐसा कुछ भी है :)? – jqno

+0

आप वैगन-एसवीएन के साथ मेवेन का उपयोग कर सकते हैं। आपको एक पूर्ण उड़ा हुआ मैवेन प्रोजेक्ट बनाने की ज़रूरत नहीं है, केवल तैनाती के लिए मेवेन पोम बनाएं। तो आप निर्माण प्रणाली के लिए मेवेन का उपयोग नहीं करते हैं। चींटी का उपयोग करके अपना जार बनाएं, फिर 'एमवीएन तैनाती: तैनाती फ़ाइल' और उपयुक्त पीओएम का प्रयोग करके तैनात करें जो वैगन-एसवीएन और "svn maven repository" को कॉन्फ़िगर करता है। –

+0

उपरोक्त वैगन-एसवीएन कॉन्फ़िगरेशन पूर्ण नहीं है, आपको java.net भंडार जोड़ने की भी आवश्यकता है। अधिक जानकारी के लिए देखें: https://wagon-svn.dev.java.net/ –

0

आप https://clojars.org/

करने के लिए अपने जार प्रस्तुत कर सकते हैं अपने pom.xml में:

<repositories> 
    <repository> 
    <id>clojars.org</id> 
    <url>http://clojars.org/repo</url> 
    </repository> 
</repositories> 
संबंधित मुद्दे