2009-08-09 24 views
84

मैं प्रॉक्सी के माध्यम से मैवेन का उपयोग करने का अपना अनुभव साझा करना चाहता हूं।मैं प्रॉक्सी के माध्यम से मेवेन का उपयोग कैसे करूं?

आप सबसे अधिक संभावना चेहरा अपवाद और जैसे संदेश जाएगा:

repository metadata for: 'org.apache.maven.plugins' could not be retrieved from repository: central due to an error: Error transferring file: Connection refused: connect 

कैसे Maven प्रॉक्सी सर्वर का उपयोग करने के लिए कॉन्फ़िगर करने के लिए?

+0

(कोई भी) मन इसे वास्तविक प्रश्न में दोहराता है (जैसे: मैं प्रॉक्सी के माध्यम से मेवेन का उपयोग कैसे करूं?)? फिर आप स्टैक ओवरफ्लो प्रारूप के साथ अधिक इनलाइन होने के लिए अपने प्रश्न बॉडी को उत्तर के रूप में पोस्ट कर सकते हैं .. – Tim

+0

मैंने इसे आपके लिए बोगदान के लिए दोबारा लिखा है, अगर आप –

+0

चाहते हैं तो कृपया अपनी मूल सामग्री को उत्तर के रूप में पोस्ट करें जैसा कि हम उसी पर संपादित करते हैं समय –

उत्तर

11

उन 2 मुद्दों से सबसे अधिक संभावना पैदा होते हैं:

  1. आप अपनी सेटिंग करने के लिए प्रॉक्सी विन्यास जोड़ने की जरूरत है। एक्सएमएल। यहां आपके उपयोगकर्ता नाम फ़ील्ड में एक चाल है। सुनिश्चित करें कि यह डोमेन \ उपयोगकर्ता नाम की तरह दिखता है। वहां डोमेन सेट करना और इस सटीक स्लैश को रखना महत्वपूर्ण है '\'। आप < का उपयोग करना चाह सकते हैं! [सीडीएटीए []] > टैग अगर आपके पासवर्ड में गैर एक्सएमएल-अनुकूल पात्र हैं।
  2. मैंने देखा है कि मैवेन 2.2.0 कभी-कभी प्रॉक्सी के माध्यम से काम नहीं करता है, जहां 2.2.1 पूरी तरह से ठीक काम करता है।

यदि उनमें से कुछ छोड़े गए हैं - मेवेन यादृच्छिक त्रुटि संदेशों के साथ विफल हो सकता है।

बस उम्मीद है कि मैंने किसी को इस मुद्दे के चारों ओर घूमने से बचाया है, जैसा कि मैंने किया था।

+0

के लिए धन्यवाद क्या आप एनटीएलएम प्रॉक्सी का उपयोग कर रहे हैं? मिनी गाइड से: "कृपया ध्यान दें कि [सी] urrently एनटीएलएम प्रॉक्सी समर्थित नहीं हैं क्योंकि उनका परीक्षण नहीं किया गया है। आप इस काम को करने के लिए जेडीके 1.4+ पर प्रासंगिक सिस्टम गुणों का उपयोग करने में सक्षम हो सकते हैं।" –

+0

इस बारे में निश्चित नहीं है। यह एक कॉर्पोरेट प्रॉक्सी है जो वास्तव में मुझसे 600 मील की दूरी पर है और सिस्टम प्रशासन से कोई भी इस सप्ताह के अंत में कार्यालय में नहीं है। तो अब किसी से नहीं पूछ सकते हैं। यह पता लगाना दिलचस्प होगा। मुझे पता है कि यह http, मोजे और अन्य प्रोटोकॉल का समर्थन करता है। शायद यह एनटीएमएल भी है। – Bogdan

103

मेवेन के लिए प्रॉक्सी सेट करने के विवरण के लिए, mini guide देखें।

अनिवार्य रूप से आपको वैश्विक सेटिंग्स ([maven install]/conf/settings.xml) में प्रॉक्सी अनुभाग सुनिश्चित करने की आवश्यकता है, या उपयोगकर्ता सेटिंग्स (${user.home}/.m2/settings.xml) सही तरीके से कॉन्फ़िगर किया गया है। किसी सार्वजनिक स्थान पर सादे पाठ में पासवर्ड संग्रहीत करने से बचने के लिए अपनी उपयोगकर्ता सेटिंग्स में ऐसा करना बेहतर होता है।

मेवेन 2.1 ने password encryption पेश किया, लेकिन मुझे यह जांचने के लिए गोल नहीं मिला है कि क्या प्रॉक्सी सेटिंग्स के साथ-साथ रिपोजिटरी पासवर्ड के लिए एन्क्रिप्शन लागू होता है (देखें कि यह क्यों नहीं होगा)।

जानकारी के लिए, आपकी सेटिंग्स.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"> 
[...] 
    <proxies> 
    <proxy> 
     <active>true</active> 
     <protocol>http</protocol> 
     <host>proxy.somewhere.com</host> 
     <port>8080</port> 
     <username>proxyuser</username> 
     <password>somepassword</password> 
     <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts> 
    </proxy> 
    </proxies> 
[...] 
</settings> 
+0

धन्यवाद, लेकिन यह पोस्ट किसी प्रश्न के मुकाबले दूसरों के लिए एक टिप है। मैंने पहले से ही इस समस्या का समाधान किया है, लेकिन गैर-स्पष्ट चीज़ों पर बहुत अधिक समय बिताया है। मैंने इसे पोस्ट किया ताकि यह किसी के लिए उपयोगी हो। – Bogdan

+7

m2 निर्देशिका में settings.xml फ़ाइल नहीं ढूंढ सकता। कोई विचार क्यों? @ रिच विक्रेता – Ariox66

+3

आपको इसे वहां रखना होगा। आप maven_home से नमूना सेटिंग्स.एक्सएमएल पा सकते हैं, वह स्थान जहां आपने मैवेन बाइनरी को अनजिप किया था। –

4

मुझे पता है कि यह वास्तव में प्रश्न का उत्तर नहीं है, लेकिन यह इस पोस्ट को खोज रहे किसी के लिए जानना उचित हो सकता है। nexus जैसे मेवेन रिपोजिटरी प्रॉक्सी को स्थापित करना भी संभव है।

आपका मैवेन स्थानीय नेक्सस प्रॉक्सी से संपर्क करने के लिए कॉन्फ़िगर किया जाएगा, और नेक्सस तब कलाकृतियों को पुनर्प्राप्त (और कैश) करेगा। इसे एक वेब इंटरफ़ेस के माध्यम से कॉन्फ़िगर किया जा सकता है और (http) प्रॉक्सी के लिए समर्थन है)।

यह एक लाभ हो सकता है, खासकर एक कंपनी सेटिंग में, क्योंकि कलाकृतियों को स्थानीय रूप से उपलब्ध हैं और तेजी से डाउनलोड किया जा सकता है, और आप बाहरी मैवेन भंडारों की उपलब्धता पर निर्भर नहीं हैं।

प्रश्न पर वापस लिंक करने के लिए; नेक्सस के साथ प्रॉक्सी कॉन्फ़िगरेशन के लिए एक अच्छा जीयूआई है, और इसे केवल एक ही स्थान पर किया जाना चाहिए, न कि प्रत्येक डेवलपर के लिए।

35

How to use a socks proxy?

कहीं एक सर्वर के लिए एक SSH सुरंग सेट करें:

ssh -D $PORT [email protected]$SERVER 

लिनक्स (बैश):

export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT" 

विंडोज:

set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT" 
+0

'MAVEN_OPTS' के माध्यम से मोजे प्रॉक्सी का उपयोग करना एकमात्र तरीका है जिसे मैं एचटीटीपीएस पर डाउनलोड करने के लिए मेवेन प्राप्त कर सकता हूं। HTTP या HTTPS प्रॉक्सी का उपयोग करके, या तो 'MAVEN_OPTS' या 'settings.xml' के माध्यम से, ' org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec निष्पादित करें जानकारी: I/O अपवाद (java.net.SocketException) {tls} -> http://proxy.mycompany.com:911-> https://repo.maven.apache.org:443: SOCKS: TTL की समयसीमा समाप्त हो गई है –

6

और जोड़ने के लिए वें विषय है, यहां मेरे अनुभव नीचे हैं ... वास्तव में अजीब और समय लेने वाला इसलिए मैंने सोचा कि यह जोड़ने लायक था।

मैं एक ऐसी ही विंडोज पर portlet-पुल का निर्माण किया की कोशिश कर रहा है, तो निम्न त्रुटियाँ हो रही समस्या लिया है:

 
Downloading: http://repo1.maven.org/maven2/org/apache/portals/bridges-pom/1.0/bridges-pom-1.0.pom 
[DEBUG] Reading resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated 
[DEBUG] Writing resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated 
[ERROR] The build could not read 1 project -> [Help 1] 
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: 
[FATAL] Non-resolvable parent POM: Could not transfer artifact 
org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2): Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local 
POM @ line 23, column 11 
... 
[ERROR] The project org.apache.portals.bridges:portals-bridges-common:2.0 (H:\path_to_project\portals-bridges-common-2.0\pom.xml) has 1 error 
[ERROR]  Non-resolvable parent POM: Could not transfer artifact org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2): 
Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local POM @ line 23, column 11: Unknown host repo1.maven.org -> [Help 2] 
... 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException 
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException 

मैं चीजों की एक जोड़ी की कोशिश की, सर्फिंग का एक सा निम्नलिखित:

  • माता-पिता को सेट करने का प्रयास किया .relative खाली खाली करें ताकि मैवेन को यह नहीं लगता कि माता-पिता स्थानीय थे। यह एसओ पर Hudson build fail: Non-resolvable parent POM और in this nabble forum पर सुझाव के अनुसार है। इसका कोई प्रभाव नहीं पड़ा।

  • मैंने यह भी सुनिश्चित करने की कोशिश की कि भंडार मेरी सेटिंग्स.xml में स्पष्ट रूप से सूचीबद्ध है लेकिन इसका कोई प्रभाव नहीं पड़ा।

  • तब मैंने सुनिश्चित किया कि this blog by Sarthon में चर्चा के अनुसार एमवीएन को अपने इतिहास पर भरोसा करने के बजाय भंडार को देखने के लिए मजबूर होना पड़ा। दुर्भाग्यवश, यह मुद्दा भी नहीं था।

  • कुछ निराशा में, मैंने यह सुनिश्चित करने के लिए अपने MAVEN_OPTS पर फिर से संशोधित किया कि मैं अपनी प्रॉक्सी सेटिंग्स को गलत नहीं कर रहा था। ये सही थे, मूल्य गैर उद्धृत यद्यपि:

    सेट MAVEN_OPTS = -Dhttp.proxyHost = myproxy.mycompany.com -Dhttp.proxyPort = 8080 -Xmx256m

  • तो, अंत में, मैं ले जाया गया मेरी settings.xml में प्रॉक्सी config और इस काम किया:

<proxies> 
     <proxy> 
     <id>genproxy</id> 
     <active>true</active> 
     <protocol>http</protocol> 
     <!--username>proxyuser</username--> 
     <!--password>proxypass</password--> 
     <host>myproxy.mycompany.com</host> 
     <port>8080</port> 
     <nonProxyHosts>*.mycompany.com|127.0.0.1</nonProxyHosts> 
     </proxy> 
    </proxies> 

सच यकीन नहीं क्यों अपने मूल MAVEN_OPTS (उद्धरण?) काम नहीं कर रहा था, जबकि settings.xml config w किया ork। मैं फिक्स को रिवर्स करना चाहता हूं और प्रत्येक चरण को दोबारा जांचना चाहता हूं लेकिन बहुत अधिक समय बर्बाद कर चुका हूं। के रूप में और कब रिपोर्ट करेंगे।

+0

क्या आप वास्तव में MAVEN_OPTS में उपयोगकर्ता नाम और पासवर्ड भी निर्दिष्ट करते हैं? – bcmoney

+1

मुझे नहीं लगता कि मैंने किया लेकिन फिर मुझे अपने प्रॉक्सी सर्वर की आवश्यकता नहीं है। जैसा कि आप देख सकते हैं, यह संभव है। सुरक्षा मुद्दों के अलावा, आप इसे आज़मा सकते हैं। मैं इकट्ठा करता हूं कि अब तक आपको अभी तक समस्याएं आ रही हैं? – wmorrison365

17

मुझे यह समस्या भी थी, और मैंने इसे .m2 फ़ोल्डर में settings.xml फ़ाइल संपादित करके हल किया। मेरे settings.xml इस तरह है:

<settings> 
    <proxies> 
    <proxy> 
     <id>genproxy</id> 
     <active>true</active> 
     <protocol>http</protocol> 
     <host>proxyHost</host> 
     <port>3128</port> 
     <username>username</username> 
     <password>password</password> 
    </proxy> 
</proxies> 
</settings> 
11

भी ध्यान रखें कि कुछ प्लग (रिमोट संसाधनों मन में आता है) एक बहुत पुराने पुस्तकालय है कि केवल MAVEN_OPTS के माध्यम से प्रॉक्सी कॉन्फ़िगरेशन को स्वीकार करता है का उपयोग करें;

-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port> 

आप इस के लिए ऑथ पर फंस सकते हैं।

+0

उबंटू रिपोजिटरी से मेवेन 3.0.5 के साथ उबंटू 14.04 पर मेरे लिए काम नहीं किया। Settings.xml फ़ाइल में प्रॉक्सी को कॉन्फ़िगर करना काम करता है। –

+1

मेवेन 3.0.4 – rmv

+0

के साथ उबंटू 14.04 पर मेरे लिए काम किया इस तरह MAVEN_OPTS सेट करने की आवश्यकता का एक उदाहरण मेवेन का उपयोग कर स्रोत से मेवेन का निर्माण कर रहा है। MAVEN_OPTS के बिना, यह कई JAR डाउनलोड करने के बावजूद, LICENSE-2.0 डाउनलोड करने में विफल रहता है। – Permaquid

0

ऊपर वर्णित तकनीकों के अलावा, कुछ प्रयासों के साथ, आप jproxyloader लाइब्रेरी का उपयोग करके प्रॉक्सी के माध्यम से मैवेन चला सकते हैं (पेज पर उदाहरण है कि यह कैसे करें: http://jproxyloader.sourceforge.net/)। यह केवल कलाकृतियों को डाउनलोड करने के लिए मोजे प्रॉक्सी सेट अप करने की अनुमति देता है।

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

0

उपर्युक्त पोस्टिंग ने मेरी समस्या को हल करने में मदद की।

  • संशोधित Maven के JRE शुद्ध सेटिंग्स (\ JRE \ lib \ net.properties) सिस्टम प्रॉक्सी सेटिंग का उपयोग करने के लिए: उपरोक्त के अतिरिक्त मैं यह काम कर में निम्न परिवर्तन करना पड़ा। https.proxyHost = प्रॉक्सी डीएनएस https.proxyPort = प्रॉक्सी पोर्ट

    • शामिल settings.xml में प्रॉक्सी सर्वर सेटिंग। मैंने एनटीएलएम प्रमाणीकरण का उपयोग करने के लिए उपयोगकर्ता नाम और पासवर्ड सेटिंग्स प्रदान नहीं कीं।
9

बस इस के साथ अपने खुद के अनुभव शामिल करने के: मेरे कंपनी की प्रॉक्सी http://webproxy.intra.companyname.com:3128 है। Maven इस प्रॉक्सी के माध्यम से काम करने के लिए, सेटिंग कैसे प्रॉक्सी सर्वर, नहीं प्रोटोकॉल का जो प्रकार से कनेक्ट करने का वर्णन बिल्कुल इस

<settings> 
    <proxies> 
    <proxy> 
     <id>default</id> 
     <active>true</active> 
     <protocol>http</protocol> 
     <host>webproxy.intra.companyname.com</host> 
     <port>3128</port> 
    </proxy> 
    </proxies> 
</settings> 

कुछ अन्य प्रॉक्सी-विन्यास फाइल के विपरीत की तरह, यहाँ होना जरूरी प्रॉक्सी किया जाना चाहिए। लक्ष्य के http भाग को मेजबाननाम से विभाजित किया जाना चाहिए, अन्यथा यह काम नहीं करेगा।

+0

इस समय मैंने बस विपरीत प्रयोग किया। यहां प्रोटोकॉल यह वर्णन करना है कि कौन से प्रोटोकॉल को इस प्रॉक्सी का उपयोग करना चाहिए। मैंने अभी एक https प्रोटोकॉल प्रॉक्सी कॉन्फ़िगर करने के लिए हासिल किया है जो https

+0

का उपयोग करके http प्रॉक्सी से कनेक्ट है धन्यवाद! यह मेरे लिए काम किया! मेरे पास "http: //" प्री-पेंड था और यह असफल हो जाएगा –

1

यदि मैवेन प्रॉक्सी के माध्यम से काम करता है लेकिन प्लगइन में से कुछ प्लग इन नहीं हैं, तो JAVA_TOOL_OPTIONS को -Dhttp*.proxy* सेटिंग्स के साथ सेट करने का प्रयास करें।

यदि आपके पास पहले से ही JAVA_OPTS सिर्फ

export JAVA_TOOL_OPTIONS=$JAVA_OPTS 
7

कर Maven प्रॉक्सी सेट करने के लिए:

संपादित अपने ~/.m2/settings.xml फ़ाइल में प्रॉक्सी सत्र। अगर आप फ़ाइल नहीं ढूंढ पा रहे हैं, तो एक बनाएं।

<settings> 
<proxies> 
    <proxy> 
     <id>httpproxy</id> 
     <active>true</active> 
     <protocol>http</protocol> 
     <host>your-proxy-host</host> 
     <port>your-proxy-port</port> 
     <nonProxyHosts>local.net|some.host.com</nonProxyHosts> 
    </proxy> 
<proxy> 
     <id>httpsproxy</id> 
     <active>true</active> 
     <protocol>https</protocol> 
     <host>your-proxy-host</host> 
     <port>your-proxy-port</port> 
     <nonProxyHosts>local.net|some.host.com</nonProxyHosts> 
    </proxy> 

</proxies> 
</settings> 

या

संपादित अपने {M2_HOME} /conf/settings.xml में प्रॉक्सी सत्र

आशा है कि यह मदद करता है .. :)

0

धन्यवाद @krosenvold।

यदि सेटिंग्स फ़ाइल में परिवर्तन नहीं होते हैं, तो पीओएम फ़ाइल वाले कमांड प्रॉम्प्ट में इसे आज़माएं।

ई: \ MyProject> mvn स्थापित -Dhttp.proxyHost = abcproxy -Dhttp.proxyPort = 8080 -Dhttps.proxyHost = abcproxy -Dhttps.proxyPort = 8080

यह मैं पासवर्ड बदले जाने के बाद तुरंत मदद की है।

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