Maven, settings.xml adlı bir dosya aracılığıyla bunu yapmak için yerleşik bir yöntem sağlar ve bu, diğer yanıtlarda ele alınmıştır. Ancak, özellikle Linux'ta, komut satırı araçlarının ortam değişkeni tarafından belirtilen proxy'yihttps_proxy
otomatik olarak kullanması gelenekseldir .
İzleyin kendinizi tekrar Do not prensibi ise (eğer hatalardan kaçınmak yardım amaçlandığı), çok güzel olurdu mvn
da uyacaktır otomatik çalışma yapamadı.
İşte gerekli dönüştürmeleri yapan bir kabuk betiği:
#! /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} $@
Bunu şöyle adlandırabilir proxied_mvn
ve şu şekilde çalıştırabilirsiniz:
$ https_proxy=http://localhost:58080 ./proxied_mvn clean package
Alternatif olarak, ortam kurulumunu başlangıç komut dosyalarınıza taşıyabilirsiniz.
FRİKİKLERİNDEN
Bir erişim için yapılandırmak Maven çalışırken yanlış gidebilir birçok şey var Nexus bir proxy üzerinden. Umarım bu komut dosyası en titiz sorunların bazılarına yardımcı olur, ancak diğerleri kalır:
Nexus kimlik bilgileri mevcut ve doğru (yalnızca gerekliyse)
İle kontrol edin mvn help:effective-settings
Maven önbelleğe alma: "çözüm yeniden denenmeyecek"
mvn clean package --update-snapshots
Maven duvar metni çıkışı - hata mesajlarının çalıştırmalar arasında ince bir şekilde farklı olmadığından emin olmak için çıktıya yakından bakmanız gerekir
Java'nın eski sürümleri _JAVA_OPTIONS
yerine JAVA_TOOL_OPTIONS
.
son söz
Birden fazla Proxy türü vardır . Buna bağlı olarak, bu sorunun yorumlanmasının birden fazla yolu vardır - buradaki çok sayıda farklı cevaplara katkıda bulunur.
İnternete bir şirket ağından (bazı şirketler için) erişmek için kullanılan (ileri HTTP / HTTPS) web proxy sunucusu durumunu açık bir şekilde ele aldım . Bu, buradaki bazı cevaplarda da değinilen bir SOCKS vekilinden önemli ölçüde farklı olabilir .
Bu arada, kullandığı için JAVA_TOOL_OPTIONS
, bu çözümler diğer Java uygulamalarınızı bir proxy içinde çalıştırmak için de uygulanabilir .
Ayrılık ipucu ... Yukarıdaki örneğim kullanıyor http://localhost:58080
. Yaşıyorum benim port yönlendirmeyi ayarlayın olmanızdır CLIENT_PROXY=localhost:58080
kullanarak gerçek ağ proxy wsl benim üzerinde uzaktan erişim çalıştırmak için istemci:
ssh $PROXY_CLIENT -R $CLIENT_PROXY:$SERVER_PROXY