मावेन इसे करने की एक अंतर्निहित पद्धति प्रदान करता है, जिसे सेटिंग्स. xml नामक एक फाइल के माध्यम से किया जाता है , और इसे अन्य उत्तरों में कवर किया गया है। हालाँकि, यह प्रथागत है, विशेष रूप से लिनक्स में, कमांड-लाइन टूल्स के लिए , पर्यावरण चर द्वारा निर्दिष्ट प्रॉक्सीhttps_proxy
का स्वचालित रूप से उपयोग करने के लिए ।
अपने आप को दोहराए जाने वाले सिद्धांत का पालन न करें (जो गलतियों से बचने में आपकी सहायता करने के लिए है), यह अच्छा होगा यदि mvn
स्वचालित रूप से भी इसके साथ काम किया जा सके।
यहाँ एक शेल स्क्रिप्ट है जो आवश्यक रूपांतरण बनाती है:
#! /usr/bin/env bash
function javaproxy {
## using "Shell Parameter Expansion"
request_scheme=$1 ; proxy=$2
notscheme=$(echo ${proxy#*://}) ## parse
scheme=$(echo ${proxy%${notscheme}}) ## remove
scheme=$(echo ${scheme%://}) ## strip
hostport=$(echo ${proxy#*//*}) ## parse
host=$(echo ${hostport%:*}) ## parse
port=$(echo ${hostport#${host}}) ## remove
port=$(echo ${port#:}) ## strip
scheme=$(echo ${scheme:-http}) ## default
host=$(echo ${host:-localhost}) ## default
port=$(echo ${port:-8080}) ## default
echo -n " -D${request_scheme}.proxyHost=${host}"
echo -n " -D${request_scheme}.proxyPort=${port}"
}
JTO=""
if [ $http_proxy ] ; then
JTO="${JTO}$(javaproxy http ${http_proxy})"
fi
if [ $https_proxy ] ; then
JTO="${JTO}$(javaproxy https ${https_proxy})"
fi
if [ $no_proxy ] ; then
JTO="${JTO} -Dhttp.nonProxyHosts=$(echo \"${no_proxy}\"|tr ',' '|')"
fi
export JAVA_TOOL_OPTIONS=${JTO}
echo "JAVA_TOOL_OPTIONS=${JAVA_TOOL_OPTIONS}"
mvn_friendliness_options+=--update-snapshots
mvn ${mvn_friendliness_options} $@
आप इसे कुछ इस तरह नाम दे सकते हैं proxied_mvn
और इसे निम्नानुसार चला सकते हैं:
$ https_proxy=http://localhost:58080 ./proxied_mvn clean package
वैकल्पिक रूप से, आप पर्यावरण सेटअप को अपनी स्टार्टअप स्क्रिप्ट में स्थानांतरित कर सकते हैं।
gotchas
कई चीजें हैं जो गलत हो सकती हैं जब प्रॉक्सी के माध्यम से नेक्सस तक पहुंचने के लिए मावेन को कॉन्फ़िगर करने की कोशिश की जाती है । उम्मीद है, इस लिपि से कुछ अति सूक्ष्म मुद्दों के साथ मदद मिलेगी, लेकिन अन्य बने रहेंगे:
Nexus क्रेडेंशियल उपलब्ध और सही (यदि आवश्यक हो तो)
इससे जाँच करें mvn help:effective-settings
मावेन कैशिंग: "संकल्प को फिर से लिखा नहीं जाएगा"
mvn clean package --update-snapshots
मैवेन वॉल-ऑफ-टेक्स्ट आउटपुट - आपको यह सुनिश्चित करने के लिए आउटपुट पर करीब से देखना होगा कि रन के बीच त्रुटि संदेश आसानी से अलग नहीं हैं
जावा के पुराने संस्करणों के _JAVA_OPTIONS
बजाय की आवश्यकता हो सकती है JAVA_TOOL_OPTIONS
।
उपसंहार
एक से अधिक तरह के प्रॉक्सी है । इसके विपरीत, एक से अधिक तरीके हैं, जिनसे इस प्रश्न की व्याख्या की गई है - यहां बड़ी संख्या में असमान उत्तरों में योगदान दिया गया है।
मैंने स्पष्ट रूप से (आगे HTTP / HTTPS) वेब प्रॉक्सी सर्वर के मामले को संबोधित किया है , जिसका उपयोग कंपनी नेटवर्क (कुछ कंपनियों के लिए) के भीतर से इंटरनेट तक पहुंचने के लिए किया जाता है। यह SOCKS प्रॉक्सी से विशेष रूप से भिन्न हो सकता है , जिसे यहां कुछ उत्तरों में भी संबोधित किया गया है।
वैसे, चूंकि यह उपयोग करता है JAVA_TOOL_OPTIONS
, इसलिए यह समाधान प्रॉक्सी के अंदर आपके अन्य जावा एप्लिकेशन को चलाने के लिए भी लागू किया जा सकता है।
बिदाई संकेत ... ऊपर मेरे उदाहरण का उपयोग करता है http://localhost:58080
। इसका कारण यह है कि मैंने अपने रिमोट-एक्सेस क्लाइंट पर WSLCLIENT_PROXY=localhost:58080
का उपयोग करके वास्तविक नेटवर्क प्रॉक्सी से पोर्ट-फ़ॉरवर्डिंग को चलाने के लिए सेट किया है:
ssh $PROXY_CLIENT -R $CLIENT_PROXY:$SERVER_PROXY