Comment faire pour que maven utilise les paramètres du système proxy
J'utilise Ubuntu avec Gnome où je peux définir les paramètres réseau proxy (avec authentification).
La question est: comment je peux exécuter maven en ligne de commande et utiliser ce proxy?
4 réponses
il y a un java.net.useSystemProxies
propriété système qui peut être fixé à true
(sur les plateformes Windows et Linux) pour dire à la JVM d'utiliser les paramètres proxy du système. À partir de la Java mise en Réseau et proxy guide:
Avant de voir en détails comment écrire un tel
ProxySelector
, parlons de la valeur par défaut. J2SE 5.0 fournit une implémentation par défaut qui renforce la compatibilité ascendante. En d'autres termes, la valeur par défautProxySelector
vérifier les propriétés du système décrit plus haut pour déterminer le mandataire à utiliser. Cependant, il y a une nouvelle fonctionnalité optionnelle: sur les systèmes Windows récents et sur Gnome 2.plates-formes x il est possible de dire la valeur par défautProxySelector
pour utiliser les paramètres proxy du système (les deux versions récentes de Windows et Gnome 2.x vous permet de définir proxies globalement à travers leur interface utilisateur). Si le système de la propriétéjava.net.useSystemProxies
est réglé surtrue
(par défaut il est réglé surfalse
pour des raisons de compatibilité), puis la valeur par défautProxySelector
essaie d'utiliser ces paramètres. Vous pouvez définir cette propriété du système sur la ligne de commande, ou vous pouvez éditer le fichier d'installation JRElib/net.properties
, de cette façon, vous avez à changer qu'une seule fois sur un système donné.
mais cela ne fonctionnera que pour les java.net.*
classes, pas de commons-httpclient, jsch, etc. Donc cela ne résout pas tout le problème et Maven ne le supporte pas vraiment (ceci est enregistré comme MNG-728).
en d'autres termes, je crains que vous ne deviez configurer les paramètres du proxy votre ~/.m2/settings.xml
.
Avez-vous de prendre un coup d'oeil à http://maven.apache.org/guides/mini/guide-proxies.html?
Dans vos paramètres.xml:
<settings>
.
.
<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>
NOTE: cela n'affecte pas le code Java! Ces paramètres de proxy sont les paramètres de proxy Maven.
ceux qui ont besoin de définir ces paramètres par la ligne de commande peuvent utiliser ce qui suit:
MAVEN_CLI_OPTS: "-DproxySet=true -Dhttp.proxyHost=yourProxyHost -Dhttp.proxyPort=9999 -Dhttp.nonProxyHosts=mvnrepository.com"
Utilisation:
mvn $MAVEN_CLI_OPTS test
Avertissement: la propriété nonprofloxxyhosts ne fonctionnait pas correctement pour moi lorsqu'elle était utilisée dans un environnement CI. Je pense que c'est peut-être parce que les caractères pipe ne sont pas interprétés correctement dans la syntaxe YAML de Gitlab, mais je n'ai pas trouvé de solution.
Source: https://confluence.atlassian.com/jirakb/java-option-http-nonproxyhosts-does-not-work-214863640.html
dans Netbeans vous devez supprimer le -Djava.net.useSystemProxies=true
Tools-> option->java->Maven
. Une fois que vous l'avez supprimé, Maven lit les paramètres proxy de settings.xml
.