web-dev-qa-db-fra.com

Comment faire en sorte que maven utilise les paramètres du proxy système

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?

24
Timofey Gorshkov

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éfaut ProxySelector 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éfaut ProxySelector 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ème Java.net.useSystemProxies est définie sur true (par défaut, elle est définie sur false pour des raisons de compatibilité), la valeur par défaut ProxySelector 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 JRE lib/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.

19
Pascal Thivent

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.

26
The Alchemist

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

6
UltimaWeapon

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.

0
Suraj Sheikh