165 votes

Comment utiliser Maven via un proxy?

Je veux partager avec vous mon expérience d'utilisation de maven par procuration.

Vous feriez probablement face à des exceptions et à des messages tels que:

Les métadonnées de référentiel pour: 'org.apache.maven.plugins' n'ont pas pu être extraites du référentiel: central en raison d'une erreur: Erreur de transfert du fichier: Connexion refusée: connexion

Voir ma réponse ci-dessous.

Bonne chance. Merci

177voto

Rich Seller Points 46052

Pour les détails de la mise en place d'un proxy pour Maven, consultez le mini-guide.

Essentiellement, vous devez vous assurer que les formulaires de procuration de la section dans les paramètres globaux [maven installer]/conf/settings.xml) ou les paramètres de l'utilisateur (${user.home}/.m2/settings.xml) est configuré correctement. Il est préférable de le faire dans vos paramètres de l'utilisateur pour éviter de stocker le mot de passe en clair dans un lieu public.

Maven 2.1 introduit le mot de passe de cryptage, mais je n'ai pas trouvé le temps de vérifier si le chiffrement s'applique pour les paramètres de proxy ainsi que le référentiel de mots de passe (ne vois pas pourquoi il ne serait pas bien).

Pour info, il y a une commenté de la configuration du proxy dans votre settings.xml et des instructions sur la façon de le modifier.

De la mini-guide, vos paramètres devrait ressembler à quelque chose comme ceci:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
[...]
  <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>

63voto

duanni Points 301

Comment utiliser un proxy chaussettes?

Configurez un tunnel SSH sur un serveur quelque part:

 ssh -D $PORT $USER@$SERVER
 

Linux (bash):

 export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
 

Les fenêtres:

 set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
 

35voto

pedrobisp Points 71

J'ai également eu ce problème et je l'ai résolu en modifiant le fichier settings.xml de mon dossier .m2. Mon fichier settings.xml est comme ceci maintenant:

 <settings>
  <proxies>
    <proxy>
      <id>genproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxyHost</host>
      <port>3128</port>
      <username>username</username>
      <password>password</password>
    </proxy>
 </proxies>
</settings>
 

17voto

Bogdan Points 295

Ceux-ci sont causés probablement par 2 questions:

  1. Vous devez ajouter la configuration du proxy de votre settings.xml. Voici une astuce dans votre champ nom d'utilisateur. Assurez-vous qu'il ressemble de domaine\nom d'utilisateur. Réglage de domaine et de mettre exactement le slash est important '\'. Vous pouvez utiliser <![CDATA[]]> balise si votre mot de passe contient non xml-personnages amicaux.
  2. J'ai remarqué maven 2.2.0 ne fonctionne pas parfois à travers un proxy à tous, où 2.2.1 fonctionne parfaitement bien.

Si certains de ceux qui sont omis - maven peut échouer avec l'erreur aléatoire des messages.

Espérons juste que j'ai sauvé quelqu'un de googler autour de cette question pendant 6 heures, comme je l'ai fait.

6voto

wmorrison365 Points 1774

Et pour ajouter à ce sujet, voici mes expériences ci-dessous... Vraiment bizarre et prend beaucoup de temps donc j'ai pensé qu'il était utile d'ajouter.

J'ai eu un problème similaire essayer de construire le portlet-pont sur Windows, trouver les erreurs suivantes:

Téléchargement: http://repo1.maven.org/maven2/org/apache/portals/bridges-pom/1.0/bridges-pom-1.0.pom
[DEBUG] la résolution de la Lecture fichier de suivi C:\Documents and Settings\myuser\.m2\repository\org\apache\portails\ponts-pom\1.0\ponts-pom-1.0.pom.lastUpdated
[DEBUG] Écrit résolution du fichier de suivi C:\Documents and Settings\myuser\.m2\repository\org\apache\portails\ponts-pom\1.0\ponts-pom-1.0.pom.lastUpdated
[ERREUR] La version n'a pas pu lire 1 projet -> [Aide 1]
org.apache.maven.projet.ProjectBuildingException: Certains problèmes ont été rencontrés lors du traitement de la Pdm:
[FATAL] Non résolu parent POM: n'a pas Pu transférer artefact
org.apache.portails:les ponts-pom:pom:1.0 à partir de/vers le centre (http://repo1.maven.org/maven2): Erreur de transfert de fichier: repo1.maven.org et 'parent.relativePath points à tort local
POM @ la ligne 23, colonne 11
...
[ERREUR] Le projet org.apache.les portails.ponts:portails-ponts-commune:2.0 (H:\path_to_project\portals-bridges-common-2.0\pom.xml) a 1 erreur
[ERREUR] Non résolu parent POM: n'a pas Pu transférer artefact org.apache.portails:les ponts-pom:pom:1.0 à partir de/vers le centre (http://repo1.maven.org/maven2):
Erreur de transfert de fichier: repo1.maven.org et 'parent.relativePath points à tort local POM @ la ligne 23, colonne 11: hôte Inconnu repo1.maven.org -> [2]
...
[ERREUR] Pour plus d'informations sur les erreurs et solutions possibles, veuillez lire les articles suivants:
[ERREUR] [Aide 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERREUR] [2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

J'ai essayé plusieurs choses, à la suite d'un peu de surf:

  • Essayé de définir le parent.relativePath comme vide de sorte que maven ne pense pas que le parent était locale. Ce n'est que par la suggestion de SORTE à Hudson construire l'échec: Non résolu parent POM et dans ce nabble forum. Cela n'a eu aucun effet.

  • J'ai aussi essayé d'assurer le référentiel a été explicitement mentionnée dans mon settings.xml mais cela n'a eu aucun effet.

  • J'ai ensuite assuré mvn a été forcé à la recherche de l'référentiel, plutôt que de compter sur sa propre histoire, comme expliqué dans ce blog par Sarthon. Malheureusement, ce n'était pas le problème.

  • En désespoir de cause, j'ai revisité mon MAVEN_OPTS pour s'assurer que je n'étais pas tomber sous le coup de mes paramètres de proxy. Ces étaient correctes, mais avec la valeur non cotées:

    ensemble MAVEN_OPTS= -Dhttp.proxyHost=myproxy.mycompany.com -Dhttp.proxyPort=8080 -Xmx256m

  • Donc, finalement, j'ai déplacé le proxy config dans mon settings.xml et cela a fonctionné:

    <proxies>
      <proxy>
        <id>genproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <!--username>proxyuser</username-->
        <!--password>proxypass</password-->
        <host>myproxy.mycompany.com</host>
        <port>8080</port>
        <nonProxyHosts>*.mycompany.com|127.0.0.1</nonProxyHosts>
      </proxy>
    </proxies>

Vraiment pas pourquoi mon original MAVEN_OPTS ne fonctionnait pas (les guillemets?) alors que le settings.xml config a fait un travail. J'aimerais inverser les corriger et vérifier chaque étape de nouveau, mais a perdu trop de temps. Rendra compte que et quand.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X