मैं ऑफ़लाइन विकास के लिए मावेन को कैसे कॉन्फ़िगर करूं?


117

क्या मावेन को किसी बिंदु पर इंटरनेट का उपयोग करने के लिए कनेक्शन की आवश्यकता होती है? मतलब विशेष रूप से संकलन, सफाई, पैकेजिंग, आदि के लिए आंतरिक मावेन प्लगइन्स प्राप्त करना?


क्या आपके पास इंटरनेट एक्सेस की कोई मशीन है? शायद एक सर्वर?
मार्सेलो

2
हम करते हैं, लेकिन वहां से चीजों को प्राप्त करने के लिए विकास का माहौल अच्छी तरह से थकाऊ है।

जवाबों:


163

आप ऑफ़लाइन मोड में मावेन चला सकते हैं mvn -o install। निश्चित रूप से आपके स्थानीय भंडार में उपलब्ध कोई भी कलाकृतियां विफल नहीं होंगी। Maven वितरित रिपॉजिटरी पर समर्पित नहीं है, लेकिन वे निश्चित रूप से चीजों को अधिक सहज बनाते हैं। इस कारण से कि कई दुकानें आंतरिक दर्पण का उपयोग करती हैं जो केंद्रीय रिपॉजिट के साथ आकस्मिक रूप से सिंक होती हैं।

इसके अलावा, यह mvn dependency:go-offlineसुनिश्चित करने के लिए उपयोग किया जा सकता है कि ऑफ़लाइन काम शुरू करने से पहले आपको अपनी सभी निर्भरता स्थानीय रूप से स्थापित की जाए।


इस उत्तर के साथ Inconjuntion, मुझे पता चला कि mvan अपने "कोर" प्लगइन्स (यानी संकलक) के साथ आता है। तो इस mvan इंस्टॉल के साथ मुझे वह मिल सकता है जिसकी मुझे आवश्यकता है।

8
यह भी विचार करें कि आप "mvan निर्भरता: गो-ऑफलाइन" का उपयोग कर सकते हैं यह सुनिश्चित करने के लिए कि आपके pom.xml में निर्दिष्ट सभी निर्भरताएँ आपके स्थानीय भंडार में मौजूद हैं।
थोरबजर्न रेवन एंडरसन

10
दुर्भाग्य से mvn dependency:go-offlineबस सब कुछ नहीं पकड़ता है। एक ताजा आभासी मशीन के अंदर, उदाहरण के लिए, मेरी परियोजना को इस लक्ष्य को चलाने के बाद भी चीजें डाउनलोड करनी चाहिए। इस मुद्दे को भी देखें ।
phs

2
मेरा अनुभव बताता है कि -o विकल्प ठीक से काम नहीं करता है और पूर्ण-ऑफ़लाइन निर्माण की अनुमति देने के लिए गो-ऑफ़लाइन लक्ष्य पर्याप्त नहीं है: इसका समाधान यहां देखें: stackoverflow.com/q/43661755/1767316
user1767316

यदि आप फ्लैग -llr को अतिरिक्त रूप से जोड़ते हैं, तो यह काम करना चाहिए।
उडो

10

यदि आपके पास अपने लैन में इंटरनेट एक्सेस के साथ एक पीसी है, तो आपको एक स्थानीय मावेन भंडार स्थापित करना चाहिए।

मैं आर्टिफैक्ट ओपन सोर्स की सलाह देता हूं । यह वही है जो हम अपने संगठन में उपयोग करते हैं, इसे सेटअप करना वास्तव में आसान है।

आर्टिफैक्ट आपके बिल्ड टूल (मावेन, एंट, आइवी, ग्रैडल आदि) और बाहरी दुनिया के बीच एक प्रॉक्सी के रूप में कार्य करता है।

यह दूरस्थ कलाकृतियों को कैश करता है ताकि आपको उन्हें बार-बार डाउनलोड न करना पड़े।

यह आंतरिक कलाकृतियों के लिए अवांछित (और कभी-कभी सुरक्षा के प्रति संवेदनशील) बाहरी अनुरोधों को ब्लॉक करता है और नियंत्रित करता है कि कैसे और कहाँ कलाकृतियों को तैनात किया जाए, और किसके द्वारा।

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>

हमने इस समाधान का उपयोग किया क्योंकि हमें अपनी विकास मशीनों में इंटरनेट एक्सेस की समस्या थी और कुछ कलाकृतियों ने दूषित फ़ाइलों को डाउनलोड किया या बिल्कुल भी डाउनलोड नहीं किया। हमें तब से समस्या नहीं है।


एक्सेस के साथ एक मशीन नहीं है जो LAN से जुड़ी है।

2
आर्टिफ़ैक्ट के साथ आप अपने पूरे रिपॉजिटरी का बैकअप ले सकते हैं और फिर इसे उन पीसी में से एक में पुनर्स्थापित कर सकते हैं जो LAN में है।
Marcelo

7

इसके लिए आपके पास दो विकल्प हैं:

1.) सेटिंग में बदलाव करें। इसे पहले टैग में जोड़ें

<localRepository>C:/Users/admin/.m2/repository</localRepository>

2.) ऑफ़लाइन कमांड के लिए -o टैग का उपयोग करें।

mvn -o clean install -DskipTests=true
mvn -o jetty:run

6

मावेन को आपके स्थानीय भंडार में निर्भरता की आवश्यकता है। उन्हें प्राप्त करने का सबसे आसान तरीका इंटरनेट एक्सेस (या यहां दिए गए अन्य समाधानों का उपयोग करके कठिन) है।

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


4

अफसोस dependency:go-offlineकी बात है मेरे लिए काम नहीं किया क्योंकि यह सब कुछ कैश नहीं था, यानी। POMs फ़ाइलें और अन्य अंतर्निहित निर्भरता का उल्लेख करते हैं।

वर्कअराउंड स्थानीय रिपॉजिटरी स्थान निर्दिष्ट करने के लिए किया गया है , या तो settings.xmlफ़ाइल के साथ <localRepository>...</localRepository>या पैरामीटर के mvnसाथ -Dmaven.repo.local=...चलकर। प्रारंभिक प्रोजेक्ट बिल्ड के बाद, सभी आवश्यक कलाकृतियों को कैश किया जाना चाहिए, और फिर आप ऑफ़लाइन मोड ( mvn -o ...) में मावेन बिल्ड को चलाते समय रिपॉजिटरी स्थान को उसी तरह से संदर्भित कर सकते हैं ।


3

ऑफ़लाइन होने से पहले आपको यह सुनिश्चित करना होगा कि सब कुछ आपके स्थानीय रेपो में है, जो ऑफ़लाइन काम करते समय आवश्यक है। प्रोजेक्ट के लिए "mvn निर्भरता: गो-ऑफलाइन" चल रहा है, आप काम करना चाहते हैं, इसे प्राप्त करने के प्रयासों को कम कर देंगे।

लेकिन यह आमतौर पर पूरी कहानी नहीं है, क्योंकि निर्भरता: गो-ऑफलाइन केवल "नंगे बिल्ड" प्लगइन्स डाउनलोड करेगा ( गो-ऑफ़लाइन / रिज़ॉल्यूशन-प्लगइन्स सभी प्लगइन निर्भरता को हल नहीं करता है )। इसलिए आपको तैनात / परीक्षण / साइट प्लगइन्स (और शायद अन्य) और उनकी निर्भरता को अपने रेपो में डाउनलोड करने का एक तरीका खोजना होगा।

इसके अलावा निर्भरता: गो-ऑफलाइन स्वयं पोम की कलाकृतियों को डाउनलोड नहीं करता है, इसलिए आपको निर्भरता की आवश्यकता है: यदि आवश्यक हो तो इसे कॉपी करें।

कभी-कभी - जैसा कि माडा ने लिखा है - आपको पता नहीं है, ऑफ़लाइन होने के दौरान आपको क्या आवश्यकता होगी, जो "पर्याप्त" रेपो होने के लिए बहुत असंभव बनाता है।

वैसे भी एक अच्छी तरह से भरा रेपो होने के लिए आपको केवल "<ऑफ़लाइन> सच </ ऑफ़लाइन>" को ऑफ़लाइन जाने के लिए Maven´s settings.xml में जोड़ना होगा।

ऑफ़लाइन होने के दौरान आप अपने रेपो को भरने के लिए इस्तेमाल की गई मावेन प्रोफाइल (आईडी) को न बदलें। मावेन अपने मेटाडेटा में डाउनलोड की गई कलाकृतियों को "पहचान" के साथ पहचानता है, जो प्रोफ़ाइल आईडी से जुड़ा है।


3

यदि आप IntelliJ का उपयोग कर रहे हैं, तो आप बस वरीयताएँ -> बिल्ड, निष्पादन, परिनियोजन -> बिल्ड टूल -> मावेन और चेक / अनचेक कार्य ऑफ़लाइन पर जा सकते हैं


1
इसी तरह - ग्रहण खिड़की है -> प्राथमिकताएं -> मावेन और "ऑफ़लाइन" की जांच करें
स्टुअर्ट ब्रॉक

2

क्या यह आपके लिए कार्य करता है?

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>

यदि नहीं, तो आपको अपनी मशीनों पर एक स्थानीय सर्वर, जैसे एपाचे चलाने की आवश्यकता हो सकती है।


यह निर्भरता और प्लगइन्स जैसे जेट्टी, टॉमकैट आदि प्लगइन्स के लिए अधिक लगता है। मैं

1
@predhme: यह दृष्टिकोण सभी प्लगइन्स के लिए काम करेगा, क्योंकि ये सभी आपके स्थानीय मशीन पर
मावेन

2


(स्रोत: jfrog.com )

या

बस सोनवाइट नेक्सस http://www.sonatype.org/nexus/ या जेफ्रॉग आर्टिफैक्टिंग https://www.jfrog.com/artifactory/ जैसे मावेन रिपॉजिटरी सर्वर का उपयोग करें

एक डेवलपर द्वारा एक प्रोजेक्ट बनाने के बाद, अगले डेवलपर्स या जेनकिंस CI द्वारा निर्मित इंटरनेट एक्सेस की आवश्यकता नहीं होगी।

मावेन रिपॉजिटरी सर्वर में मावेन सेंट्रल (या अधिक आवश्यक सार्वजनिक रिपॉजिटरी) का उपयोग करने के लिए कॉन्फ़िगर की गई प्रॉक्सी हो सकती है, और उनके पास दूरस्थ रिपॉजिटरी में कलाकृतियों की लिस्ट में शामिल होने की सूची हो सकती है।


1

मेरा अनुभव बताता है कि -o विकल्प ठीक से काम नहीं करता है और पूर्ण ऑफ़लाइन निर्माण की अनुमति देने के लिए गो-ऑफ़लाइन लक्ष्य पर्याप्त है।

मैं जिस समाधान को मान्य कर सकता था, --legacy-local-repositoryउसमें -o(ऑफ़लाइन) एक के बजाय मावेन विकल्प का उपयोग और स्थानीय रिपॉजिटरी का उपयोग शामिल था। वितरण रिपॉजिटरी के

इसके अलावा, मुझे हर कॉपी करनी थी maven-metadata-maven2_central.xmlmaven-metadata.xml मावेन द्वारा अपेक्षित रूप में स्थानीय-रेपो फाइल ।

इसका हल मैं यहां देखूंगा


0

सीधे अपने प्रश्न का उत्तर देना: इसके लिए इंटरनेट कनेक्शन की आवश्यकता नहीं है, बल्कि LAN या लोकल डिस्क पर रिपॉजिटरी तक पहुंच (अन्य पोस्ट करने वाले लोगों के संकेत का उपयोग करें)।

यदि आपकी परियोजना परिपक्व चरण में नहीं है, तो इसका मतलब है कि जब पीओएम को अक्सर बदल दिया जाता है, तो ऑफलाइन मोड बहुत ही अव्यवहारिक होगा, क्योंकि आपको अपनी रिपॉजिटरी को भी अक्सर अपडेट करना होगा। जब तक आप एक रिपॉजिटरी की एक प्रति प्राप्त कर सकते हैं जिसके पास आपकी ज़रूरत का सब कुछ है, लेकिन आप कैसे जानेंगे? आमतौर पर आप स्क्रैच से एक रिपॉजिटरी शुरू करते हैं और यह विकास के दौरान धीरे-धीरे क्लोन हो जाता है (दूसरे रिपॉजिटरी से जुड़े कंप्यूटर पर)। Repo1.maven.org सार्वजनिक रिपॉजिटरी की एक प्रति का वजन सैकड़ों गीगाबाइट होता है, इसलिए मैं ब्रूट बल की सिफारिश नहीं करूंगा।


यह है, लेकिन एक मावेन परियोजना (चींटी) के रूप में नहीं। इसलिए मेरे पास सभी आवश्यक कार्य हैं जो विशेष रूप से मावेन आंतरिक कामों के बारे में सोच रहे थे। जैसे मावेन-प्लगइन-कंपाइलर।

यदि आपके पास चींटी द्वारा नियंत्रित सभी निर्भरताएं हैं, तो आपके पास वैसे भी मावेन मेटाडेटा की कमी है, इसलिए मावेन उन्हें नहीं उठाएंगे। "मावेन आंतरिक कामों" के लिए, उन्हें डाउनलोड करने का एकमात्र तरीका यह है कि आप अपने पोम संरचना का निर्माण करें और इसे इंटरनेट से जुड़े कंप्यूटर पर चलाएं। "इसे चलाएं" से मेरा मतलब है कि हर उस लक्ष्य को निष्पादित करना जो आपको लगता है कि आप उपयोग कर रहे हैं, जरूरी नहीं कि केवल "mvan क्लीन इंस्टॉल" हो।
MaDa

0

ऑफ़लाइन काम करने से पहले तैयारी में बस चलाएं mvn dependency:go-offline


0

की कमी को ठीक करने के लिए एक नया प्लगइन सामने आया है mvn dependency:go-offline:

https://github.com/qaware/go-offline-maven-plugin

इसे अपने पोम में जोड़ें, फिर चलाएं mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies। एक बार जब आप सभी गतिशील आश्रितों को सेटअप कर लेते हैं, तो मावेन फिर से कुछ डाउनलोड करने की कोशिश नहीं करेगा (जब तक कि आप संस्करण अपडेट नहीं करते)।


-2
<offline> false </offline>

<localRepository>${user.home}/.m2/repository</localRepository>

सेवा

<offline> true <offline>

<localRepository>${user.home}/.m2/repository</localRepository>

ऑफ़लाइन टैग को असत्य से सच में बदलें।

रेपो से ऑनलाइन डाउनलोड करेगा

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