इस लेख को लिखने के लिए, मुझे इस तरह की जानकारी के स्रोतों के कुछ विखंडन द्वारा प्रोत्साहित किया गया था
एक महत्वपूर्ण विषय, मेरी राय में, मावेन सेंट्रल में अपनी कलाकृतियों को कैसे प्रकाशित किया जाए। जरूर चाहिए
सोनाटाइप कर्मचारियों को श्रद्धांजलि अर्पित करें: उनका आधिकारिक गाइड (लेख के अंत में लिंक) काफी पूर्ण है
पूरी प्रक्रिया का वर्णन करता है। लेकिन इसमें कुछ सूक्ष्म सूक्ष्मताएँ नहीं होती हैं (जैसे भंडारण की समस्या
पासवर्ड), और वह खुद थोड़ा गड़बड़ दिखता है। रूसी में, हालांकि, मुझे इस विषय पर संसाधन नहीं मिले
सिद्धांत। मेरे लिए व्यक्तिगत रूप से, यह डरावना नहीं है, लेकिन यह कई को रोक सकता है।
अधिकांश जावा प्रोग्रामर शायद जानते हैं कि मावेन सेंट्रल क्या है। जो नहीं जानते उनके लिए:
जेवीएम प्लेटफॉर्म के लिए मावेन सेंट्रल एक विशाल पुस्तकालय भंडार है। कोई भी पोस्ट कर सकता है
पुस्तकालय के लिए, यदि इसका लाइसेंस सार्वजनिक वितरण की अनुमति देता है। उसके बाद यह पुस्तकालय
मावेन जैसे प्रोजेक्ट बिल्ड सिस्टम में निर्भरता के रूप में निर्दिष्ट किया जा सकता है। फिर प्रोजेक्ट बनाते समय
यह सिस्टम स्वचालित रूप से लाइब्रेरी को डाउनलोड करेगा और इसका उपयोग करके आपके प्रोजेक्ट को संकलित करेगा। मेरे पर
देखो, यह मावेन सेंट्रल की उपस्थिति है जो सफलता के लिए महत्वपूर्ण कारणों (यदि सबसे महत्वपूर्ण नहीं) में से एक है
एक मंच के रूप में जावा। मुझे एक एकल रिपॉजिटरी से अधिक नहीं पता है जिसकी संख्या में सेंट्रल के साथ तुलना की जा सकती है
कलाकृतियों और प्रयोज्य; केवल एक चीज जो दिमाग में आती है वह है CPAN, व्यापक
पर्ल आर्काइव नेटवर्क, या हास्केल कैबल, लेकिन यह अभी भी ठीक नहीं है।
केंद्रीय पुस्तकालय में कोई भी रख सकता है। तुम भी अपने पुस्तकालयों, लेकिन अपलोड नहीं कर सकते
अजनबियों कि कोई भी अभी तक वहाँ बाहर करने में सक्षम है, लेकिन केवल अगर पुस्तकालय लाइसेंस की अनुमति देता है
ऐसा फैला। एक हफ्ते पहले, मैंने एक लाइब्रेरी लिखी और इसे सेंट्रल में रखने का फैसला किया। कैसे
यह पता चला कि यह पहली नज़र में कुछ गैर-तुच्छ प्रक्रिया है, हालांकि सामान्य तौर पर कुछ भी जटिल नहीं है
इसमें नहीं।
प्रारंभ में, जैसा कि मैं इस विषय पर बाकी प्रलेखन से समझता हूं, मावेन सेंट्रल में कलाकृतियों
rsync का उपयोग करके उनके सर्वर पर चढ़ गया। हालांकि, यह एक बुरा निर्णय माना जाता था, और अब मावेन
सेंट्रल को कलाकृतियों के कई बड़े भरोसेमंद रिपॉजिटरी से मंगाया जाता है। एक वह जो हमें
रुचियों, को
सोनटाइप ओएसएस रिपोजिटरी होस्टिंग सेवा कहा जाता है। यह एक सोनटाइप परियोजना है,
किसी को भी अपनी लाइब्रेरी साझा करने का अवसर देना। मावेन सर्वर्स
केंद्रीय नियमित रूप से OSSRH, और उन कलाकृतियों के साथ सिंक्रनाइज़ करता है जो उपयोगकर्ता के रूप में चिह्नित करता है
केंद्रीय भंडार में अपलोड करने के लिए तैयार है।
संक्षेप में, अपनी कलाकृतियों को केंद्रीय में अपलोड करने की प्रक्रिया इस तरह दिखती है: आपको पंजीकरण करने की आवश्यकता है
Sonatype JIRA और रिपॉजिटरी खोलने के लिए एक टिकट छोड़ दें; फिर जब भंडार खोला जाता है, तो यह आवश्यक होगा
इसमें कलाकृतियों को लोड करें (मैन्युअल रूप से या एक विशेष बिल्ड सिस्टम कॉन्फ़िगरेशन का उपयोग करके), और फिर आपको ज़रूरत है
संकेत मिलता है कि इन कलाकृतियों को सेंट्रल पर अपलोड किया जाना चाहिए।
सोनाटाइप रिपॉजिटरी दो, स्नैपशॉट और स्टेजिंग प्रदान करती है। स्नैपशॉट रिपॉजिटरी के लिए है
तथाकथित
स्नैपशॉट , वास्तव में, मुख्य विकास शाखा से सीधे विधानसभाओं के
संस्करण नियंत्रण प्रणाली। मंचन कलाकृतियों की रिलीज़ के लिए है - वे संस्करण
जो अब नहीं बदलेगा। स्टेजिंग को तथाकथित इसलिए कहा जाता है क्योंकि सत्यापन के बाद इसमें से कलाकृतियों को दिखाया जाता है
मावेन सेंट्रल में स्वास्थ्य को बढ़ावा देने की जरूरत है। थोड़ी देर बाद, मावेन सेंट्रल
सोनटाइप OSSRH और आपकी कलाकृतियाँ सेंट्रल में दिखाई देती हैं।
वस्तुओं पर सभी चरणों पर विचार करें।
सोनटाइप JIRA के लिए एक टिकट बनाएं
पहला कदम एक रिपॉजिटरी खोलना है जहां कलाकृतियों को सिंक्रनाइज़ करने के लिए अपलोड किया जाएगा
केन्द्रीय। यह Sonatype JIRA में टिकट प्रणाली के माध्यम से किया जाता है। लिंक:
http://issues.sonatype.org/पहले आपको वहां पंजीकरण करने की आवश्यकता है। खुलने वाले पृष्ठ पर, निर्दिष्ट लिंक पर
साइन अप लिंक पर क्लिक
करें । मानक पंजीकरण फॉर्म खुल जाएगा। इसे भरें और सबमिट करें। हालांकि, यह ध्यान दिया जाना चाहिए कि
पूर्ण नाम फ़ील्ड में आपको "वासिली पुपकिन", जैसे दो शब्दों के माध्यम से पूर्ण नाम दर्ज करना होगा
अंतरिक्ष बार आधिकारिक गाइड का दावा है कि यह JIRA और कुछ के बीच एकीकरण समस्याओं के कारण है
नाम भीड़ है।
फॉर्म भरने और सबमिट करने के बाद, आप स्वचालित रूप से सिस्टम में लॉग इन हो जाएंगे। मुख्य पर
बाईं ओर की परियोजनाओं की सूची में पेज पर आप निम्न लिंक पा सकते हैं:
https://issues.sonatype.org/browse/OSSRH यह वह खंड है जहां आपको उद्घाटन के लिए टिकट बनाने की आवश्यकता होती है
भंडार। टिकट बनाने के लिए,
न्यू प्रोजेक्ट बटन पर क्लिक करें। खेतों को इस तरह भरा जाना चाहिए:

महत्वपूर्ण बिंदु: समूह आईडी मैंने सामान्य रूप से संकेत दिया -
org.bitbucket.googolplex
, लेकिन नहीं
org.bitbucket.googolplex.devourer
। यह भविष्य के लिए एक आंख के साथ किया जाता है: अचानक आप चाहते हैं
अपनी एक और परियोजना प्रकाशित करें? इस स्थिति में, आपको अतिरिक्त टिकट शुरू नहीं करना होगा,
रिपॉजिटरी के लिए वैश्विक उपसर्ग पहले से ही आप से संबंधित होगा। सिद्धांत रूप में, जो लोग काम करते हैं
इन टिकटों के ऊपर काफी पर्याप्त और अनुभवी हैं, इसलिए वे आपके लिए समूह आईडी बदल सकते हैं
अपने आप अधिक सामान्य।
आधिकारिक बयान में कहा गया है कि समूह आईडी को चुना जाना चाहिए ताकि यह इंगित करे
जिस डोमेन को आप नियंत्रित करते हैं। यह आपकी साइट या संस्करण नियंत्रण सेवा की तरह एक अनुभाग हो सकता है
गितुब या बिटबकेट (जैसे मेरा, ऊपर के उदाहरण में)। आपके लिए एक भंडार बनाने से पहले,
यदि इसके साथ कोई समस्या है (उदाहरण के लिए, संबंधित साइट) तो पैकेज नाम की जाँच की जाएगी और लिखा जाएगा
तुम्हारी नहीं)।
थोड़ी देर के बाद, एक सोनटाइप कर्मचारी आपके लिए रिपॉजिटरी का एक सेट बनाएगा और टिकट को बंद कर देगा। मेरे लिए
भाग्यशाली मेरा टिकट इसके निर्माण के तुरंत बाद बंद कर दिया गया था। उसके बाद डाउनलोड करना संभव होगा
मंचन भंडार के लिए कलाकृतियां, और वहां से उन्हें सेंट्रल में पदोन्नत किया जा सकता है। हालांकि इससे पहले
कैसे अपलोड करने के लिए कलाकृतियों को रिपोजिटरी बनाया जाना चाहिए। इसके लिए आपको अधिकार की आवश्यकता है
मावेन को कैसे सेट किया जाए, यानी आपके प्रोजेक्ट की
pom.xml
फ़ाइल और संभवत: सिस्टम फ़ाइल
सेटिंग्स maven
settings.xml
।
हम कलाकृतियों को उतारने के लिए तैयार करते हैं और तैयार करते हैं
अब कई बिल्ड सिस्टम हैं जो मानक मावेन कलाकृतियां बना सकते हैं: मावेन,
बिल्डर, एसबीटी, ग्रैडल, लेनिंगन और अन्य। नीचे दिए गए निर्देश मावेन संस्करण 3 के लिए सही हैं। विकी लेख
सोनाटाइप (इस लेख के अंत में लिंक) में अन्य बिल्ड सिस्टम का उपयोग करने के निर्देश हैं।
मावेन के संदर्भ में "विरूपण साक्ष्य" की अवधारणा का सार बहुत सरल है - यह एक नियमित जार फ़ाइल है
अतिरिक्त मेटा जानकारी। विरूपण साक्ष्य का यह तथाकथित तथाकथित
पोम , प्रोजेक्ट ऑब्जेक्ट है
मॉडल
pom.xml
फ़ाइल द्वारा दर्शाया गया है। मैं यहां पूर्ण प्रारूप का वर्णन नहीं करूंगा, लेकिन केवल संकेत दें
पोम के कुछ हिस्सों को मावेन सेंट्रल को सफलतापूर्वक विरूपण साक्ष्य अपलोड करने के लिए होना चाहिए।
तो, आधिकारिक सोनाटाइप प्रलेखन के अनुसार,
pom.xml
में मौजूद होना चाहिए
अनुभाग:
, packaging
jar
, ,
-sources.jar
-javadoc.jar
. , ,
Scala, -sources.jar
-javadoc.jar
README- .
, pom.xml
,
,
.
GnuPG,
hkp://pool.sks-keyservers.net/
. GnuPG .
pom.xml
:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.bitbucket.googolplex.devourer</groupId> <artifactId>devourer</artifactId> <version>0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Devourer</name> <description>Feeds on XML and produces objects</description> <url>http://bitbucket.org/googolplex/devourer</url> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <scm> <url>https://bitbucket.org/googolplex/devourer</url> <connection>scm:hg:https://bitbucket.org/googolplex/devourer</connection> </scm> <developers> <developer> <id>owner</id> <name>Vladimir Matveev</name> <email>dpx.infinity@gmail.com</email> <timezone>UTC+4</timezone> </developer> </developers> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>14.0-rc3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies> </project>
सिद्धांत रूप में, ऐसे pom.xml
भंडार को कलाकृतियों को अपलोड करने के लिए पर्याप्त है। कलाकृतियों तो
मैन्युअल रूप से हस्ताक्षर करने और मैन्युअल रूप से उन्हें स्टेजिंग रिपॉजिटरी में अपलोड करना आवश्यक होगा। हालाँकि, मावन था
नियमित संचालन को स्वचालित करने के लिए, और भंडार में कलाकृतियों को तैनात करने के लिए तैयार किया गया
उनमें समाहित है।
मावेन के लिए भंडार को कलाकृतियों को अपलोड करने और उन्हें हस्ताक्षर करने के लिए, आपको जोड़ने और कॉन्फ़िगर करने की आवश्यकता है
कई प्लगइन्स। हालाँकि, इससे पहले हम GnuPG को कॉन्फ़िगर कर देंगे।
कलाकृतियों पर हस्ताक्षर के लिए GnuPG कॉन्फ़िगर करें
GnuPG (GNU गोपनीयता गार्ड) के लिए प्रसिद्ध सॉफ्टवेयर पैकेज का एक वैकल्पिक कार्यान्वयन है
पूरी तरह से OpenPGP मानक के साथ संगत PGP क्रिप्टोग्राफी। GnuPG कुंजी बना सकते हैं
असममित और सममित डेटा एन्क्रिप्शन के लिए, साथ ही कई द्वारा स्वयं एन्क्रिप्शन
एल्गोरिदम। आप GnuPG के साथ डेटा भी साइन कर सकते हैं। यह हमारी कार्यक्षमता है जो हमें रुचती है।
GnuPG स्थापना प्रणाली पर निर्भर है। लिनक्स में, सब कुछ बहुत सरल है। आम तौर पर GnuPG आती है
मानक भंडार और, सबसे अधिक संभावना है, पहले से ही आपके साथ स्थापित है। यदि नहीं, तो आपको पूछने की आवश्यकता है
पैकेज प्रबंधक इसे स्थापित करें। उदाहरण के लिए, आर्कलिनक्स में ऐसा किया जाता है:
$ सूदो पैक्मैन -एस ग्नुप
PATH
में स्थापित करने के बाद PATH
gpg
कार्यक्रम दिखाई देगा। मावेन के लिए यह पर्याप्त है।
विंडोज पर, इंस्टॉलेशन थोड़ा अधिक जटिल है। GnuPG विंडोज के लिए संकलित बायनेरी प्रदान करता है, लेकिन वहाँ
केवल अपेक्षाकृत पुराने संस्करण हैं। मेरी राय में, सबसे अच्छा विकल्प का उपयोग करना होगा
gpg4win यह कई अतिरिक्त कार्यक्रमों के साथ विंडोज के लिए एक GnuPG बिल्ड है, उदाहरण के लिए,
ग्राफिक कुंजी प्रबंधक। मावेन के लिए, यह, सामान्य रूप से, आवश्यक नहीं है, लेकिन यह आपके लिए उपयोगी हो सकता है। वेबसाइट
gpg4win: http://www.gpg4win.org/ आप वहां इंस्टॉलर पा सकते हैं। स्थापित होने पर, यह स्वचालित रूप से होना चाहिए
निर्देशिका में पथ जोड़ें जहाँ gpg.exe
सिस्टम PATH
में निहित है - यह वही है जो हमें चाहिए।
GnuPG स्थापित करने के बाद, टर्मिनल खोलें और उसमें लिखें:
$ gpg --gen- कुंजी
GnuPG आपसे निम्नलिखित विकल्प मांगेगा:
- मुख्य एल्गोरिथ्म - डिफ़ॉल्ट रूप से, आपके पास सबसे अधिक संभावना
RSA and RSA
, यह सबसे अच्छा विकल्प है।
- मुख्य आकार - डिफ़ॉल्ट 2048 बिट्स होना चाहिए, यह पर्याप्त है।
- कुंजी वैधता अवधि - डिफ़ॉल्ट रूप से, कुंजी असीमित समय के लिए मान्य है; आप सेट कर सकते हैं
अतिरिक्त सुरक्षा उपाय के रूप में वैधता। कुंजी समाप्त होने के बाद, आप कर सकते हैं
यदि आप कुंजी के लिए पासवर्ड नहीं भूले हैं तो नवीनीकरण करेंगे।
- नाम और ई-मेल - आपका नाम और ईमेल। यह वास्तविक इंगित करने के लिए अभी भी वांछनीय है
मान।
- टिप्पणी - एक वैकल्पिक क्षेत्र (मुझे नहीं पता कि इसकी आवश्यकता क्यों है), इसे खाली छोड़ दें।
- पासवर्ड - यहां आपको निजी कुंजी की सुरक्षा के लिए पासवर्ड दर्ज करने की आवश्यकता है। सिस्टम पर निर्भर
वे आपको पासवर्ड अलग-अलग तरीके से दर्ज करने का संकेत देंगे: एक ग्राफिक विंडो दिखाई दे सकती है (gpg4win या GnuPG,)
लिनक्स के ग्राफिकल शेल के नीचे से लॉन्च किया गया), या आपको एक पासवर्ड दर्ज करने के लिए प्रेरित किया जाएगा
टर्मिनल। जब भी आपको किसी निजी का उपयोग करने की आवश्यकता होगी, तो यह पासवर्ड अनुरोध किया जाएगा
एक कुंजी, उदाहरण के लिए, कुंजी की वैधता अवधि पर हस्ताक्षर या अद्यतन करने के लिए।
इन सभी मापदंडों को दर्ज करने के बाद, GnuPG आपको माउस को ट्विच करने या कुछ टाइप करने के लिए कहेगा
कुंजी पीढ़ी के लिए एन्ट्रापी पाने के लिए कीबोर्ड। यदि आप इसके साथ काम करते हैं तो सावधान रहें।
SSH के माध्यम से सर्वर पर: GnuPG उपकरणों के माध्यम से, से एंट्रॉपी की प्रत्याशा में बहुत लंबे समय तक फ्रीज कर सकता है
SSH माउस या कीबोर्ड को खींचा नहीं जा सकता है।
फिर, GnuPG सफल मुख्य पीढ़ी की रिपोर्ट करेगी और उनका फिंगरप्रिंट प्रिंट करेगी। उपलब्धता फिर से जांचें
कुंजी टाइप करके दर्ज किया जा सकता है gpg --list-keys
:
$ gpg - सूची-कुंजी
C: /Users/vpupkin/AppData/Roaming/gnupg/pubring.gpg
-------------------------------------------------- -
पब 2048R / 1A89FE67 2013-02-26
uid वासिली पुपकिन <vp@example.com>
उप 2048R / D9725D51 2013-02-26
अब आप GnuPG का उपयोग करके फ़ाइलों (और वास्तव में किसी भी डेटा) पर हस्ताक्षर कर सकते हैं। एक और बचा
पल: आपको अपनी सार्वजनिक कुंजी को hkp://pool.sks-keyservers.net
कुंजी hkp://pool.sks-keyservers.net
पर अपलोड करने की hkp://pool.sks-keyservers.net
। के लिए
ऐसा करने के लिए, निम्न कमांड दर्ज करें:
$ gpg --keyserver hkp: //pool.sks-keyservers.net --send-keys 1A89FE6
--send-keys
पैरामीटर का तर्क --send-keys
एक छोटा फिंगरप्रिंट निर्दिष्ट करता है, जिसे आउटपुट से लिया जा सकता है
gpg --list-keys
। थोड़ी देर बाद, GnuPG बंद हो जाएगी, जिसका मतलब होगा कि कुंजी
प्रकाशित किया।
अब, यदि आप कलाकृतियों पर हस्ताक्षर नहीं करना चाहते हैं और उन्हें मैन्युअल रूप से भंडार में अपलोड करना चाहते हैं, तो आपको आवश्यकता है
मावेन को सेट करें ताकि यह आपके लिए करे।
स्वचालित रूप से हस्ताक्षर करने और स्नैपशॉट को संग्रहित करने के लिए कलाकृतियों को अपलोड करने और अपलोड करने के लिए एक मावेन को कॉन्फ़िगर करना
अधिकांश pom.xml
कॉन्फ़िगरेशन उपयुक्त प्लगइन्स pom.xml
कॉन्फ़िगर pom.xml
से किया जाता है। हालांकि,
कॉन्फ़िगरेशन का हिस्सा settings.xml
में जोड़ा जाना चाहिए। xml, मावेन सेटिंग्स की सिस्टम फ़ाइल। आमतौर पर यह
फ़ाइल $HOME/.m2/settings.xml
( %HOME%\.m2\settings.xml
$HOME/.m2/settings.xml
%HOME%\.m2\settings.xml
विंडोज पर) में निहित है और इसके लिए इरादा है।
उपयोगकर्ता-विशिष्ट सेटिंग्स, जैसे पासवर्ड या रिपॉजिटरी।
सबसे पहले आपको सोनाटाइप द्वारा प्रदान की गई कलाकृतियों से अपना पोम.एक्सएमएल विरासत बनाने की आवश्यकता है
विशेष रूप से सर्वर पर कलाकृतियों के अपलोड को सरल बनाने के लिए। ऐसा करने के लिए, निम्नलिखित जोड़ें
अपने pom.xml
में टुकड़ा:
<parent> <groupId>org.sonatype.oss</groupId> <artifactId>oss-parent</artifactId> <version>7</version> </parent>
जहां तक मैं समझता हूं (यदि आपने इसे अभी तक खुद नहीं आजमाया है) यदि आप एक जटिल मल्टी-मॉड्यूल डाउनलोड करने जा रहे हैं
एक परियोजना जो पहले से ही पीओएम वंशानुक्रम का उपयोग करती है, तो आपको उन सभी के oss-parent
पूर्वज बनाने की आवश्यकता है
ऐसी कलाकृतियाँ जिनमें पूर्वज नहीं होते हैं, अर्थात् परियोजना में सभी पदानुक्रमों की जड़ें होती हैं। आमतौर पर ऐसी जड़
एक लेकिन फिर भी।
यहाँ आवश्यक प्लगइन्स की एक सूची है:
maven-source-plugin
maven-javadoc-plugin
maven-gpg-plugin
इसके अलावा एक और maven-release-plugin
, लेकिन यह वांछित कॉन्फ़िगरेशन के माध्यम से स्वचालित रूप से जोड़ा जाता है
oss-parent
से वंशानुक्रम।
सबसे सरल maven-source-plugin
और maven-javadoc-plugin
को कॉन्फ़िगर करना है। बस जोड़ते हैं
pom.xml
में निम्नलिखित अनुभाग:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>attach-sources</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9</version> <executions> <execution> <id>attach-javadocs</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
यहां हमने बताया कि package
जीवन चक्र चरण में, आपको स्रोत के साथ जार फाइलें बनाने की आवश्यकता है और
प्रलेखन। शेष प्लगइन्स, maven-release-plugin
और maven-gpg-plugin
, स्वचालित रूप से हैं
इन उत्पन्न कलाकृतियों को उठाओ, कोई अतिरिक्त विन्यास की आवश्यकता नहीं है।
इसके बाद, हम कलाकृतियों की रिलीज़ के लिए प्लगइन को कॉन्फ़िगर करेंगे, maven-release-plugin
। जैसा मैंने कहा, यह प्लगइन
स्वतः oss-parent
विरूपण साक्ष्य से कॉन्फ़िगर किया गया है, जिसमें से हमारे
कलाकृतियों। साथ ही, इस कलाकृति में रिपॉजिटरी एड्रेस कॉन्फ़िगर किए गए हैं। maven-release-plugin
होगा
कलाकृतियों को डाउनलोड करने के लिए उनका उपयोग करें। लेकिन जाहिर है, सिर्फ कलाकृतियों को लोड करना
रिपॉजिटरी नहीं हो सकती है, आपको खुद को पहचानने की आवश्यकता है, अर्थात नाम और पासवर्ड निर्दिष्ट करें।
नाम और पासवर्ड settings.xml
में निर्दिष्ट settings.xml
। settings.xml
। इस फ़ाइल का अंतिम संस्करण देखना चाहिए
कुछ इस तरह:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>sonatype-nexus-snapshots</id> <username>vpupkin</username> <password>password</password> </server> <server> <id>sonatype-nexus-staging</id> <username>vpupkin</username> <password>password</password> </server> <server> <id>bitbucket.org</id> <username>vpupkin</username> <password>password</password> </server> </servers> </settings>
रिपॉजिटरी आइडेंटिफायर्स sonatype-nexus-snapshots
और sonatype-nexus-staging
परिभाषित किए गए हैं
oss-parent
, और मावेन स्वचालित रूप से संबंधित settings.xml
से उपयोगकर्ता नाम और पासवर्ड लेगा। xml अनुभाग
इन रिपॉजिटरी में कलाकृतियों को अपलोड करने के लिए। उपयोगकर्ता नाम और पासवर्ड उन होना चाहिए जो थे
सोनाटाइप JIRA के लिए पंजीकरण करते समय उपयोग किया जाता है।
मैंने यह भी पहचानकर्ता bitbucket.org
साथ एक सर्वर का संकेत दिया। यह प्लगइन के लिए आवश्यक है।
maven-scm-plugin
, जो सिस्टम पर बनाने के लिए maven-release-plugin
द्वारा उपयोग किया जाता है
रिलीज़ के अनुरूप टैग का संस्करण नियंत्रण। इसे काम करने के लिए, आपको निर्दिष्ट करना होगा
pom.xml :
ब्लॉक pom.xml :
अतिरिक्त पता pom.xml
:
pom.xml
:
<scm> <url>https://bitbucket.org/googolplex/devourer</url> <connection>scm:hg:https://bitbucket.org/googolplex/devourer</connection> <developerConnection>scm:hg:https://bitbucket.org/googolplex/devourer</developerConnection> </scm>
नया पता developerConnection
तत्व में सूचीबद्ध है। यहां यह connection
के पते से मेल खाता है,
लेकिन, आम तौर पर बोलते हुए, वे अलग-अलग हो सकते हैं: connection
मतलब कोड पर रीड-ओनली एक्सेस का पता है, और
developerConnection
- पढ़ने-लिखने पर। बस उसके लिए हमने उपयोगकर्ता नाम और पासवर्ड जोड़ा
bitbucket.org
settings.xml
। maven-scm-plugin
खुद यह पहचानता है कि यह उपयोगकर्ता नाम और पासवर्ड
उस सर्वर का संदर्भ लें जो सूचीबद्ध है .
maven-scm-plugin
PATH
. , hg
hg.exe
.
maven-release-plugin
VCS
. : , Windows
, PATH.
maven-gpg-plugin
. ,
, , Maven Central.
, . , ,
maven-release-plugin
, .
, .
, .
pom.xml
, settings.xml
. maven-gpg-plugin
pom.xml
:
.
maven-scm-plugin
PATH
. , hg
hg.exe
.
maven-release-plugin
VCS
. : , Windows
, PATH.
maven-gpg-plugin
. ,
, , Maven Central.
, . , ,
maven-release-plugin
, .
, .
, .
pom.xml
, settings.xml
. maven-gpg-plugin
pom.xml
:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <profiles> <profile> <id>sign-artifacts</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.4</version> <configuration> <passphrase>${gpg.passphrase}</passphrase> </configuration> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
यहां एक नई प्रोफ़ाइल की घोषणा की गई है, sign-artifacts
, और इंगित करता है कि इसे सक्रिय किया जाना चाहिए
तब जब performRelease
सिस्टम गुण true
। यह गुण सेट करता है
maven-release-plugin
जब उसकी रिलीज़ टीम चल रही हो। प्रोफ़ाइल में कॉन्फ़िगर किया गया
maven-gpg-plugin
: इसे verify
जीवन चक्र verify
तक पहुँचने पर शुरू किया जाना चाहिए। भी
प्लगइन को GPG कुंजी के लिए हमारा पासवर्ड दिया गया है।
यह पासवर्ड gpg.passphrase
प्रॉपर्टी से होकर gpg.passphrase
है। यह स्पष्ट है कि पासवर्ड को निजी रखें
pom.xml
में कुंजी कुछ अनुचित है। इसके बजाय, इसे settings.xml
में कॉन्फ़िगर करें। के लिए
एक और प्रोफ़ाइल बनाएं, लेकिन पहले से settings.xml
अंदर। settings.xml
। यह इस तरह दिखेगा:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <profiles> <profile> <id>gpg-passphrase</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.passphrase>passphrase</gpg.passphrase> </properties> </profile> </profiles> </settings>
यहां हम इंगित करते हैं कि प्रोफ़ाइल में आपको gpg.passphrase
गुण को एक समान मान के साथ परिभाषित करने की आवश्यकता है
कुंजी के लिए पासवर्ड। यह मान कॉन्फ़िगरेशन में उपयुक्त स्थान पर प्रतिस्थापित किया जाएगा।
maven-gpg-plugin
'एक। सक्रियण की स्थितियों में, इसकी लागत होती है , क्योंकि कुंजी पासवर्ड
न केवल रिलीज की प्रक्रिया के दौरान ही, बल्कि इसके लिए तैयारी की प्रक्रिया में भी इसकी आवश्यकता होगी
इसमें से किसी भी प्लगइन्स द्वारा कोई विशिष्ट विशेषताएं स्थापित नहीं की गई हैं।
भंडार में कलाकृतियों को अपलोड करना
सामान्य तौर पर, यह वह सब है जो मावेन को कलाकृतियों को रिपॉजिटरी में अपलोड करने में सक्षम बनाने के लिए किया जाना चाहिए। अगर अब
आप प्रोजेक्ट के रूट में निम्न कमांड चलाते हैं:
$ मवन तैनात
फिर थोड़ी देर के बाद आपकी कलाकृतियों का वर्तमान संस्करण स्नैपशॉट रिपॉजिटरी में अपलोड किया जाएगा।
स्नैपशॉट रिपॉजिटरी को बाहर से एक्सेस किया जा सकता है, उदाहरण के लिए, स्नैपशॉट संस्करणों का उपयोग करने के लिए
विरूपण साक्ष्य। ऐसा करना संभव है, उदाहरण के लिए, इस पते पर:
https://oss.sonatype.org/content/groups/staging । हालांकि, इस लिंक पर भंडार दूसरे के लिए महत्वपूर्ण है
कारण। इसमें न केवल स्नैपशॉट और रिलीज़ शामिल हैं, बल्कि तथाकथित भी हैं। मंचन संस्करण
कलाकृतियों। वास्तव में, ये रिलीज़ संस्करण हैं जो मावेन द्वारा अभी तक सिंक्रनाइज़ नहीं किए गए हैं।
केन्द्रीय। अंतिम जांच के लिए स्टेज स्पेस की आवश्यकता होती है जो आपकी कलाकृतियों के साथ सब कुछ है।
हां, सेंट्रल में एक विरूपण साक्ष्य जारी करने से पहले, यह जांचने योग्य है कि, उदाहरण के लिए, आपके द्वारा उपयोग की जाने वाली परियोजना
यदि यह नए रिलीज संस्करण पर निर्भर करता है तो कलाकृतियां सामान्य रूप से संकलित होती हैं। यदि उत्पन्न होती है
कुछ समस्याओं, मंचन कलाकृतियों को हटाया और पुनः बनाया जा सकता है। एक बार सभी समस्याओं
अनुमति दी, मंचित कलाकृतियों को मावेन सेंट्रल में "प्रचारित" किया जा सकता है। अब से, इसे पहले से ही बदल दें
यह असंभव होगा।
आइए एक नज़दीकी नज़र डालें कि कैसे एक स्टेजिंग रिपॉजिटरी में एक कलाकृति लोड हो रही है, और आपको क्या करने की आवश्यकता है
केंद्रीय को कलाकृतियों को "अग्रिम" करने के लिए।
चूंकि परियोजना पहले ही कलाकृतियों को जारी करने के लिए कॉन्फ़िगर की गई है, यह दो कमांड चलाने के लिए पर्याप्त है:
$ mvan रिलीज: तैयार
...
$ mvan रिलीज़: प्रदर्शन
...
पहली टीम एक रिलीज की तैयारी कर रही है। विशेष रूप से, वह निम्नलिखित कार्य करती है:
- जाँचता है कि स्रोत के पेड़ में कोई भी अनपेक्षित परिवर्तन नहीं हैं;
- जाँच करता है कि सभी कलाकृतियों की अन्य कलाकृतियों के स्नैपशॉट संस्करणों पर कोई निर्भरता नहीं है;
x-SNAPSHOT
से आपके द्वारा निर्दिष्ट सभी कलाकृतियों के संस्करण को बदलता है;
- नया पथ फिट करने के लिए
pom.xml
में संस्करण नियंत्रण प्रणाली की जानकारी को संशोधित करता है
नई रिलीज़ के लिए रिपॉजिटरी (उन वीसीएस के लिए प्रासंगिक है जिसमें टैग की कोई अलग अवधारणा नहीं है,)
जैसे SVN);
- यह सत्यापित करने के लिए स्वचालित परीक्षण चलाता है कि कुछ भी नहीं टूटा है;
- प्रतिबद्ध
pom.xml
संशोधित;
- नए संस्करण के लिए रिपॉजिटरी में एक टैग बनाता है, जो आपसे टैग का नाम पूछता है;
y-SNAPSHOT
पर pom.xml
में संस्करण को अपडेट करता है (यह आपको प्लगइन भी पूछेगा);
- प्रतिबद्ध
pom.xml
संशोधित।
इस प्रकार, mvn release:prepare
को निष्पादित करने के बाद mvn release:prepare
, दो कमेंट रिपॉजिटरी में बनते हैं (पहले एक के साथ
वर्तमान स्नैपशॉट संस्करण को रिलीज़ संस्करण में अपडेट कर रहा है, और दूसरा - रिलीज़ से एक नए स्नैपशॉट तक) और
एक टैग (जो कि जारी संस्करण मौजूद है, जिसमें वह संकेत देगा)।
दूसरे शब्दों में, mvn release:prepare
रिपोजिटरी में एक "रिलीज प्वाइंट" बनाती है, जो उस स्थिति को ठीक करती है
प्रोजेक्ट, जो सेंट्रल में पड़ेगा।
अब आपको आर्टवर्क को रिपॉजिटरी में अपलोड करना होगा। ऐसा करने के लिए, दूसरी कमांड का उपयोग करें, mvn release:perform
। यह कमांड रिपॉजिटरी से रिलीज टैग को खींचता है और इसे कमांड के साथ इकट्ठा करता है
mvn site-deploy
। mvn site-deploy
इस तरह के एक परियोजना विन्यास के संदर्भ में आदेश है कि हम
किया, मंचन भंडार में विरूपण साक्ष्य अपलोड करें।
जाहिर है, mvn release:perform
को कहीं से लोड करने के लिए टैग का नाम लेना चाहिए। वह है
किसी टैग को release.properties
फ़ाइल से ले सकते हैं, जो mvn release:prepare
द्वारा बनाई गई है mvn release:prepare
कमांड mvn release:prepare
, या कमांड लाइन से। विरूपण साक्ष्य और संबंधित फाइलों के सफल अपलोड के बाद
रिपॉजिटरी, release:perform
release:prepare
द्वारा बनाई गई अतिरिक्त फ़ाइलों को हटा देगा release:prepare
।
ध्यान दें: ऐसे VCS का उपयोग करते समय, जिसमें फ़ाइल सिस्टम के साथ टैग की अवधारणा संबद्ध नहीं है
(उदाहरण के लिए, Mercurial और Git), कमांड लाइन के माध्यम से टैग नाम को इंगित करें, दुर्भाग्य से
अनुमति नहीं है। मुझे आम तौर पर mvn release:perform
लिए टैग निर्दिष्ट करने का कोई तरीका नहीं मिला mvn release:perform
, अगर यह पहले नहीं था
mvn release:prepare
द्वारा किया गया mvn release:prepare
। अगर कोई मुझे यह करने के लिए कहता है, तो मैं बहुत आभारी रहूंगा।
इस प्रकार, इन आदेशों को निष्पादित करने के बाद, आपकी कलाकृतियों को मंचन भंडार में अपलोड किया जाएगा। उनके
Sonatype Nexus रिपॉजिटरी मैनेजमेंट सिस्टम के वेब इंटरफ़ेस के माध्यम से देखा जा सकता है
https://oss.sonatype.org/ ऊपरी दाएं कोने में, लॉग इन करने के लिए लॉग इन लिंक पर क्लिक करें
लॉगिन और पासवर्ड जिसे आपने JIRA के लिए पंजीकरण करते समय चुना था। उसके बाद, बाईं ओर सूची दिखाई देगी
प्रचार समूह बनाएँ , और इसके तीन लिंक हैं। हमें जिसकी आवश्यकता होती है उसे स्टेजिंग रिपॉजिटरी कहा जाता है। पर
केंद्रीय विंडो में उस पर क्लिक करने से स्टेजिंग रिपॉजिटरी की सूची खुलती है, यानी अस्थायी रिपोजिटरी
चरणबद्ध अवस्था में कलाकृतियों के लिए। आधिकारिक प्रलेखन खिड़की के स्क्रीनशॉट प्रदान करता है जिसमें
केवल एक रिपॉजिटरी दिखाई दे रही है, जिसमें से हमने अभी-अभी कलाकृति अपलोड की है। हालाँकि, के अनुसार
किसी कारण से यह मेरे लिए इस तरह दिखता है:

जैसा कि मुझे JIRA टिकट में जवाब दिया गया था, इन कलाकृतियों की उपस्थिति डरावनी नहीं है, वे हस्तक्षेप नहीं करते हैं, और सामान्य
उपयोगकर्ताओं को अभी भी उन्हें बदलने का अधिकार नहीं है।
मेरा भंडार ऊपर की ओर है। यह देखा जा सकता है कि वह बंद स्थिति में है, लेकिन आपके पास पहले यह स्थिति होगी
खोलें। सामान्य तौर पर, एक स्टेजिंग रिपॉजिटरी दो राज्यों में हो सकती है - ओपन और बंद । स्थिति में
Open . Closed
, Close . Nexus ,
, Maven Central:
, pom.xml
.. - ,
Nexus , . कैसे
Closed , ;
Maven Central.
staging-: https://oss.sonatype.org/content/groups/staging . ,
, "" Maven Central.
, Central,
staging- Release .
staging- .
Sonatype OSSRH: https://oss.sonatype.org/content/groups/public . ,
Maven Central, .
Maven Central ,
Sonatype JIRA , "" ,
Maven Central:

Sonatype ( :
, ; , JIRA
— 12 ), .
Maven Central. बधाई! :)
.
, , staging- ""
Maven Central .
settings.xml
, ,
settings.xml
. : —
. , .
.
:
http://maven.apache.org/guides/mini/guide-encryption.html . ,
.
- -:
$ mvn --encrypt-master-password your-password
. .
, , :
{FshtxgrHbMoH+X+v4cwYL9t9QgtwTgoLmfiV6LkPkvg=}
$HOME/.m2/settings-security.xml
, :
<settingsSecurity> <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master> </settingsSecurity>
- . :
$ mvn --encrypt-password your-password
. :
{tly+tTyx46MHPhht/SryJw8+x4n4oWfzgAPZ/B+KFoc=}
settings.xml
:
<settings> ... <servers> ... <server> <id>my.server</id> <username>foo</username> <password>{tly+tTyx46MHPhht/SryJw8+x4n4oWfzgAPZ/B+KFoc=}</password> </server> ... </servers> ... </settings>
, : maven-deploy-plugin
,
maven-scm-plugin
.. , : . .
, -
. , -.
, settings.xml
-. settings-security.xml
-
, settings.xml
.
- , settings-security.xml
-
, , , $HOME/.m2/settings-security.xml
,
, :
<settingsSecurity> <relocation>/media/secure-flash/settings-security.xml</relocation> </settingsSecurity>
, settings.xml
.
, . -, - maven-scm-plugin
Mercurial.
, as-is, , , , .
, .
SSH- Mercurial. , pom.xml
:
<scm> <url>https://bitbucket.org/googolplex/devourer</url> <connection>scm:hg:https://bitbucket.org/googolplex/devourer</connection> <developerConnection>scm:hg:ssh://hg@bitbucket.org/googolplex/devourer</developerConnection> </scm>
. SSH-
, . ,
VCS .
— .
, .
settings.xml
, :
<profiles> <profile> <id>gpg-passphrase</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.passphrase>passphrase</gpg.passphrase> </properties> </profile> </profiles>
, maven-gpg-plugin
, ,
( ).
— ( GnuPG)
" " GnuPG .
settings.xml
pom.xml
.
settings.xml
:
<profiles> <profile> <id>gpg-passphrase</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.passphrase/> <gpg.home>/media/secure-flash/gnupg</gpg.home> </properties> </profile> </profiles>
maven-gpg-plugin
pom.xml
:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.4</version> <configuration> <passphrase>${gpg.passphrase}</passphrase> <homedir>${gpg.home}</homedir> </configuration> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin>
, gpg.home
, GnuPG
, .
— , .
maven-gpg-plugin
pom.xml
.
, , : mvn release:prepare
mvn release:perform
.
Unix-, , , , SSH-
: 600,
- .
— settings.xml
. .
— : mvn release:prepare -Dgpg.passphrase=passphrase
, , , , .
mvn --encrypt{,-master}-password
:
, .
, , ~/.zsh_history
.
, , , ~/.viminfo
~-
.
,
. , -
.
निष्कर्ष
, Maven Central — Java ,
, Java. ,
, . ,
. पढ़ने के लिए धन्यवाद।
, .
Emacs Org Mode, Org -> Docbook -> Habr Exporter .
- Sonatype OSSRH:
https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide - Sonatype GnuPG :
https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven - : http://maven.apache.org/guides/index.html ,
http://maven.apache.org/plugins/index.html - , .