J'utilise Ubuntu avec Gnome où je peux définir les paramètres du proxy réseau (avec authentification).
La question est: comment puis-je exécuter maven en ligne de commande et lui faire utiliser ce proxy?
Il existe une propriété système Java.net.useSystemProxies
qui peut être définie sur true
(sur les plates-formes Windows et Linux) pour indiquer à la machine virtuelle Java d'utiliser les paramètres de proxy système. Extrait du Guide de mise en réseau et de procuration Java :
Avant de voir en détail comment écrire une
ProxySelector
, parlons de celle par défaut. J2SE 5.0 fournit une implémentation par défaut qui impose la compatibilité ascendante. En d'autres termes, la variable par défautProxySelector
vérifiera les propriétés système décrites précédemment pour déterminer le proxy à utiliser. Cependant, il existe une nouvelle fonctionnalité facultative: sur les systèmes Windows récents et sur les plates-formes Gnome 2.x, il est possible d'indiquer à la variable par défautProxySelector
d'utiliser les paramètres de proxy du système (les versions récentes de Windows et de Gnome 2.x vous permettent de définir des proxies). globalement à travers leur interface utilisateur). Si la propriété systèmeJava.net.useSystemProxies
est définie surtrue
(par défaut, elle est définie surfalse
pour des raisons de compatibilité), la valeur par défautProxySelector
tentera d'utiliser ces paramètres. Vous pouvez définir cette propriété système sur la ligne de commande ou éditer le fichier d'installation JRElib/net.properties
, de cette façon vous ne devez la modifier qu'une seule fois sur un système donné.
Mais cela ne fonctionnera que pour les classes Java.net.*
, pas pour commons-httpclient, jsch, etc. Cela ne résout donc pas le problème dans son ensemble et Maven ne le prend pas vraiment en charge (ceci est consigné sous le nom MNG-728 ) .
En d'autres termes, j'ai bien peur que vous deviez configurer les paramètres de proxy dans votre ~/.m2/settings.xml
.
Avez-vous consulté http://maven.Apache.org/guides/mini/guide-proxies.html ?
Dans votre settings.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 des paramètres de proxy du référentiel Maven.
Ceux qui doivent définir ces paramètres via la ligne de commande peuvent utiliser les éléments suivants:
MAVEN_CLI_OPTS: "-DproxySet=true -Dhttp.proxyHost=yourProxyHost -Dhttp.proxyPort=9999 -Dhttp.nonProxyHosts=mvnrepository.com"
Usage:
mvn $MAVEN_CLI_OPTS test
Avertissement: La propriété NonProxyHosts ne fonctionnait pas correctement pour moi lorsque je l'utilisais depuis un environnement CI. Je suppose que cela pourrait être dû au fait que les caractères du canal ne sont pas interprétés correctement dans la syntaxe YAML de Gitlab, mais je n’ai pas trouvé le moyen de résoudre ce problème.
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
de Tools-> option->Java->Maven
. Une fois que vous l'avez supprimé, Maven lit les paramètres de proxy à partir de settings.xml
.