क्या मावेन को किसी बिंदु पर इंटरनेट का उपयोग करने के लिए कनेक्शन की आवश्यकता होती है? मतलब विशेष रूप से संकलन, सफाई, पैकेजिंग, आदि के लिए आंतरिक मावेन प्लगइन्स प्राप्त करना?
क्या मावेन को किसी बिंदु पर इंटरनेट का उपयोग करने के लिए कनेक्शन की आवश्यकता होती है? मतलब विशेष रूप से संकलन, सफाई, पैकेजिंग, आदि के लिए आंतरिक मावेन प्लगइन्स प्राप्त करना?
जवाबों:
आप ऑफ़लाइन मोड में मावेन चला सकते हैं mvn -o install
। निश्चित रूप से आपके स्थानीय भंडार में उपलब्ध कोई भी कलाकृतियां विफल नहीं होंगी। Maven वितरित रिपॉजिटरी पर समर्पित नहीं है, लेकिन वे निश्चित रूप से चीजों को अधिक सहज बनाते हैं। इस कारण से कि कई दुकानें आंतरिक दर्पण का उपयोग करती हैं जो केंद्रीय रिपॉजिट के साथ आकस्मिक रूप से सिंक होती हैं।
इसके अलावा, यह mvn dependency:go-offline
सुनिश्चित करने के लिए उपयोग किया जा सकता है कि ऑफ़लाइन काम शुरू करने से पहले आपको अपनी सभी निर्भरता स्थानीय रूप से स्थापित की जाए।
mvn dependency:go-offline
बस सब कुछ नहीं पकड़ता है। एक ताजा आभासी मशीन के अंदर, उदाहरण के लिए, मेरी परियोजना को इस लक्ष्य को चलाने के बाद भी चीजें डाउनलोड करनी चाहिए। इस मुद्दे को भी देखें ।
यदि आपके पास अपने लैन में इंटरनेट एक्सेस के साथ एक पीसी है, तो आपको एक स्थानीय मावेन भंडार स्थापित करना चाहिए।
मैं आर्टिफैक्ट ओपन सोर्स की सलाह देता हूं । यह वही है जो हम अपने संगठन में उपयोग करते हैं, इसे सेटअप करना वास्तव में आसान है।
आर्टिफैक्ट आपके बिल्ड टूल (मावेन, एंट, आइवी, ग्रैडल आदि) और बाहरी दुनिया के बीच एक प्रॉक्सी के रूप में कार्य करता है।
यह दूरस्थ कलाकृतियों को कैश करता है ताकि आपको उन्हें बार-बार डाउनलोड न करना पड़े।
यह आंतरिक कलाकृतियों के लिए अवांछित (और कभी-कभी सुरक्षा के प्रति संवेदनशील) बाहरी अनुरोधों को ब्लॉक करता है और नियंत्रित करता है कि कैसे और कहाँ कलाकृतियों को तैनात किया जाए, और किसके द्वारा।
Artifactory लगाने के बाद आपको settings.xml
विकास मशीनों में सिर्फ Maven को बदलना होगा :
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
हमने इस समाधान का उपयोग किया क्योंकि हमें अपनी विकास मशीनों में इंटरनेट एक्सेस की समस्या थी और कुछ कलाकृतियों ने दूषित फ़ाइलों को डाउनलोड किया या बिल्कुल भी डाउनलोड नहीं किया। हमें तब से समस्या नहीं है।
इसके लिए आपके पास दो विकल्प हैं:
1.) सेटिंग में बदलाव करें। इसे पहले टैग में जोड़ें
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.) ऑफ़लाइन कमांड के लिए -o टैग का उपयोग करें।
mvn -o clean install -DskipTests=true
mvn -o jetty:run
मावेन को आपके स्थानीय भंडार में निर्भरता की आवश्यकता है। उन्हें प्राप्त करने का सबसे आसान तरीका इंटरनेट एक्सेस (या यहां दिए गए अन्य समाधानों का उपयोग करके कठिन) है।
इसलिए यह मान लिया गया कि आप अस्थायी रूप से इंटरनेट का उपयोग कर सकते हैं, आप मावेन-निर्भरता-प्लगइन का उपयोग करके अपनी निर्भरता के साथ ऑफ़लाइन जाने के लिए तैयार कर सकते हैं : गो-ऑफ़लाइन लक्ष्य। यह आपके सभी प्रोजेक्ट निर्भरता को आपके स्थानीय रिपॉजिटरी में डाउनलोड करेगा (निश्चित रूप से निर्भरता / प्लगइन्स में बदलाव के लिए नए इंटरनेट / सेंट्रल रिपॉजिटरी एक्सेस की आवश्यकता होगी)।
अफसोस
dependency:go-offline
की बात है मेरे लिए काम नहीं किया क्योंकि यह सब कुछ कैश नहीं था, यानी। POMs फ़ाइलें और अन्य अंतर्निहित निर्भरता का उल्लेख करते हैं।
वर्कअराउंड स्थानीय रिपॉजिटरी स्थान निर्दिष्ट करने के लिए किया गया है , या तो settings.xml
फ़ाइल के साथ <localRepository>...</localRepository>
या पैरामीटर के mvn
साथ -Dmaven.repo.local=...
चलकर। प्रारंभिक प्रोजेक्ट बिल्ड के बाद, सभी आवश्यक कलाकृतियों को कैश किया जाना चाहिए, और फिर आप ऑफ़लाइन मोड ( mvn -o ...
) में मावेन बिल्ड को चलाते समय रिपॉजिटरी स्थान को उसी तरह से संदर्भित कर सकते हैं ।
ऑफ़लाइन होने से पहले आपको यह सुनिश्चित करना होगा कि सब कुछ आपके स्थानीय रेपो में है, जो ऑफ़लाइन काम करते समय आवश्यक है। प्रोजेक्ट के लिए "mvn निर्भरता: गो-ऑफलाइन" चल रहा है, आप काम करना चाहते हैं, इसे प्राप्त करने के प्रयासों को कम कर देंगे।
लेकिन यह आमतौर पर पूरी कहानी नहीं है, क्योंकि निर्भरता: गो-ऑफलाइन केवल "नंगे बिल्ड" प्लगइन्स डाउनलोड करेगा ( गो-ऑफ़लाइन / रिज़ॉल्यूशन-प्लगइन्स सभी प्लगइन निर्भरता को हल नहीं करता है )। इसलिए आपको तैनात / परीक्षण / साइट प्लगइन्स (और शायद अन्य) और उनकी निर्भरता को अपने रेपो में डाउनलोड करने का एक तरीका खोजना होगा।
इसके अलावा निर्भरता: गो-ऑफलाइन स्वयं पोम की कलाकृतियों को डाउनलोड नहीं करता है, इसलिए आपको निर्भरता की आवश्यकता है: यदि आवश्यक हो तो इसे कॉपी करें।
कभी-कभी - जैसा कि माडा ने लिखा है - आपको पता नहीं है, ऑफ़लाइन होने के दौरान आपको क्या आवश्यकता होगी, जो "पर्याप्त" रेपो होने के लिए बहुत असंभव बनाता है।
वैसे भी एक अच्छी तरह से भरा रेपो होने के लिए आपको केवल "<ऑफ़लाइन> सच </ ऑफ़लाइन>" को ऑफ़लाइन जाने के लिए Maven´s settings.xml में जोड़ना होगा।
ऑफ़लाइन होने के दौरान आप अपने रेपो को भरने के लिए इस्तेमाल की गई मावेन प्रोफाइल (आईडी) को न बदलें। मावेन अपने मेटाडेटा में डाउनलोड की गई कलाकृतियों को "पहचान" के साथ पहचानता है, जो प्रोफ़ाइल आईडी से जुड़ा है।
यदि आप IntelliJ का उपयोग कर रहे हैं, तो आप बस वरीयताएँ -> बिल्ड, निष्पादन, परिनियोजन -> बिल्ड टूल -> मावेन और चेक / अनचेक कार्य ऑफ़लाइन पर जा सकते हैं ।
क्या यह आपके लिए कार्य करता है?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
अपने प्लगइन रिपॉजिटरी में इसे जोड़ना न भूलें और जहाँ भी आपका रिपॉज़िटरी है, वहां url को इंगित करें।
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
यदि नहीं, तो आपको अपनी मशीनों पर एक स्थानीय सर्वर, जैसे एपाचे चलाने की आवश्यकता हो सकती है।
(स्रोत: jfrog.com )
या
बस सोनवाइट नेक्सस http://www.sonatype.org/nexus/ या जेफ्रॉग आर्टिफैक्टिंग https://www.jfrog.com/artifactory/ जैसे मावेन रिपॉजिटरी सर्वर का उपयोग करें ।
एक डेवलपर द्वारा एक प्रोजेक्ट बनाने के बाद, अगले डेवलपर्स या जेनकिंस CI द्वारा निर्मित इंटरनेट एक्सेस की आवश्यकता नहीं होगी।
मावेन रिपॉजिटरी सर्वर में मावेन सेंट्रल (या अधिक आवश्यक सार्वजनिक रिपॉजिटरी) का उपयोग करने के लिए कॉन्फ़िगर की गई प्रॉक्सी हो सकती है, और उनके पास दूरस्थ रिपॉजिटरी में कलाकृतियों की लिस्ट में शामिल होने की सूची हो सकती है।
मेरा अनुभव बताता है कि -o विकल्प ठीक से काम नहीं करता है और पूर्ण ऑफ़लाइन निर्माण की अनुमति देने के लिए गो-ऑफ़लाइन लक्ष्य पर्याप्त है।
मैं जिस समाधान को मान्य कर सकता था, --legacy-local-repository
उसमें -o
(ऑफ़लाइन) एक के बजाय मावेन विकल्प का उपयोग और स्थानीय रिपॉजिटरी का उपयोग शामिल था। वितरण रिपॉजिटरी के
इसके अलावा, मुझे हर कॉपी करनी थी maven-metadata-maven2_central.xml
maven-metadata.xml
मावेन द्वारा अपेक्षित रूप में स्थानीय-रेपो फाइल ।
इसका हल मैं यहां देखूंगा ।
सीधे अपने प्रश्न का उत्तर देना: इसके लिए इंटरनेट कनेक्शन की आवश्यकता नहीं है, बल्कि LAN या लोकल डिस्क पर रिपॉजिटरी तक पहुंच (अन्य पोस्ट करने वाले लोगों के संकेत का उपयोग करें)।
यदि आपकी परियोजना परिपक्व चरण में नहीं है, तो इसका मतलब है कि जब पीओएम को अक्सर बदल दिया जाता है, तो ऑफलाइन मोड बहुत ही अव्यवहारिक होगा, क्योंकि आपको अपनी रिपॉजिटरी को भी अक्सर अपडेट करना होगा। जब तक आप एक रिपॉजिटरी की एक प्रति प्राप्त कर सकते हैं जिसके पास आपकी ज़रूरत का सब कुछ है, लेकिन आप कैसे जानेंगे? आमतौर पर आप स्क्रैच से एक रिपॉजिटरी शुरू करते हैं और यह विकास के दौरान धीरे-धीरे क्लोन हो जाता है (दूसरे रिपॉजिटरी से जुड़े कंप्यूटर पर)। Repo1.maven.org सार्वजनिक रिपॉजिटरी की एक प्रति का वजन सैकड़ों गीगाबाइट होता है, इसलिए मैं ब्रूट बल की सिफारिश नहीं करूंगा।
की कमी को ठीक करने के लिए एक नया प्लगइन सामने आया है mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
इसे अपने पोम में जोड़ें, फिर चलाएं mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
। एक बार जब आप सभी गतिशील आश्रितों को सेटअप कर लेते हैं, तो मावेन फिर से कुछ डाउनलोड करने की कोशिश नहीं करेगा (जब तक कि आप संस्करण अपडेट नहीं करते)।