Domanda

Voglio condividere la mia esperienza di utilizzo di Maven attraverso un proxy.

si sarebbe molto probabilmente eccezioni viso e messaggi come:

repository metadata for: 'org.apache.maven.plugins' could not be retrieved from 
repository: central due to an error: Error transferring file: Connection refused: connect

o

[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-
plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its 
dependencies could not be resolved: Failed to read artifact descriptor for 
org.apache.maven.plugins:maven-clean-plugin:jar:2.5

Come configurare Maven per utilizzare server proxy?

È stato utile?

Soluzione 6

Questi sono causati probabilmente da 2 problemi:

  1. è necessario aggiungere la configurazione proxy per il tuo settings.xml. Ecco un trucco nel vostro campo nome utente. Assicurarsi che sembra dominio \ nomeutente. Impostazione dominio lì e mettere questo barra esatta è importante '\'. Si potrebbe desiderare di utilizzare tag se la password contiene caratteri non XML-friendly.
  2. Ho notato Maven 2.2.0 non funziona a volte attraverso un proxy a tutti, dove 2.2.1 funziona perfettamente bene.

Se alcuni di questi sono omessi -. Maven potrebbe non riuscire con i messaggi di errore casuale

solo che ho salvato qualcuno da googling questo problema per 6 ore, come ho fatto io.

Altri suggerimenti

Per i dettagli della creazione di un proxy per Maven, vedere la mini guida .

In sostanza è necessario per assicurare la sezione proxy in entrambe le impostazioni globali ([maven install]/conf/settings.xml), o le impostazioni utente (${user.home}/.m2/settings.xml) sia configurato correttamente. E 'meglio farlo nelle impostazioni utente per evitare di memorizzare la password in testo normale in un luogo pubblico.

Maven 2.1 introdotto crittografia delle password , ma io non ho rotonda per verificare se la crittografia si applica per le impostazioni del proxy e le password del repository (non si vede il motivo per cui non sarebbe però).

Per info, v'è una configurazione proxy commentata-out nel vostro settings.xml e le istruzioni su come modificarlo.

Dal mini-guida, le impostazioni dovrebbe essere simile a questo:

<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>

Come utilizzare un proxy SOCKS?

Impostare un tunnel SSH ad un server da qualche parte:

ssh -D $PORT $USER@$SERVER

Linux (bash):

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

Windows:

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

Si noti inoltre che alcuni plugin (remote-risorse viene in mente) utilizzare una libreria veramente vecchia che accetta solo la configurazione del proxy tramite MAVEN_OPTS;

-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>

Si potrebbe essere bloccato su autenticazione per questo.

Ho anche avuto questo problema, e ho risolto modificando il file settings.xml nella mia cartella .m2. Il mio settings.xml è come questo ora:

<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>

Per impostare Maven Proxy :

Modifica la sessione proxy nel file ~ / .m2 / settings.xml . Se non riesci a trovare il file, crearne uno.

<settings>
<proxies>
    <proxy>
        <id>httpproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
<proxy>
        <id>httpsproxy</id>
        <active>true</active>
        <protocol>https</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

</proxies>
</settings>

o

Modifica la sessione proxy nel {} M2_HOME /conf/settings.xml

Speranza che aiuta ..:)

Giusto per aggiungere le mie esperienze con questo: delega della mia azienda è http://webproxy.intra.companyname.com:3128. Per Maven per lavorare tramite questo proxy, le impostazioni devono essere esattamente come questo

<settings>
  <proxies>
    <proxy>
      <id>default</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>webproxy.intra.companyname.com</host>
      <port>3128</port>
    </proxy>
  </proxies>
</settings>

A differenza di altri file di configurazione proxy, il protocol qui descrive come collegare al server proxy, non quali tipi di protocollo dovrebbero essere approssimati. La parte http del bersaglio deve essere scissi dal nome host, altrimenti non funzionerà.

Grazie @krosenvold.

Se le modifiche apportate ai file impostazioni non funzionano, provare questo nel prompt dei comandi con il file POM.

mvn install -Dhttp.proxyHost=abcproxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=abcproxy -Dhttps.proxyPort=8080

Questo mi ha aiutato subito dopo una modifica della password.

corro cntlm localy, configurato con una password NTLMv2 hash per l'autenticazione con il proxy aziendale, e utilizzare

export MAVEN_OPTS="-DproxyHost=127.0.0.1 -DproxyPort=3128"

di utilizzare tale delega da maven. Naturalmente il proxy si utilizza dovrebbe sostenere cntlm / NTLMv2.

E per aggiungere a questo argomento, here're le mie esperienze qui sotto ... davvero strano e che richiede tempo così ho pensato che valeva la pena di aggiungere.

Ho avuto un problema simile cercando di costruire la portlet ponte su Windows, ottenendo i seguenti errori:

Downloading: http://repo1.maven.org/maven2/org/apache/portals/bridges-pom/1.0/bridges-pom-1.0.pom
[DEBUG] Reading resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[DEBUG] Writing resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not transfer artifact
org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2): Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local
POM @ line 23, column 11
...
[ERROR]   The project org.apache.portals.bridges:portals-bridges-common:2.0 (H:\path_to_project\portals-bridges-common-2.0\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Could not transfer artifact org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2):
Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local POM @ line 23, column 11: Unknown host repo1.maven.org -> [Help 2]
...
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

Ho provato un paio di cose, dopo un po 'di surf:

  • Ho cercato di impostare l'parent.relativePath come vuoto in modo che Maven non pensava che il genitore era locale. Questo è secondo il suggerimento sul SO Hudson costruire venga meno genitore non risolvibile POM e in questo forum Nabble . Questo non ha avuto effetto.

  • Ho provato anche garantire il repository è stato esplicitamente indicato nel mio settings.xml ma questo non ha avuto effetto sia.

  • Ho poi assicurato mvn è stato costretto per cercare il repository, piuttosto che fare affidamento su di essa la propria storia, come discusso in questo blog Sarthon . Purtroppo, questo non era il problema sia.

  • In alcuni preda alla disperazione, ho poi rivisitato i miei MAVEN_OPTS per garantire non ero di infrangere le mie impostazioni proxy. Questi erano corrette, anche se con il valore non quotati:

      

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

  • Così, finalmente, ho spostato il config delega nella mia settings.xml e questo ha funzionato:

    <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>

In realtà non so perché i miei MAVEN_OPTS originali non funzionava (le virgolette?), Mentre la configurazione settings.xml ha funzionato. Mi piacerebbe invertire la correzione e ricontrollare ogni passo, ma ho perso troppo tempo. Riferirà, come e quando.

So che questo non è davvero una risposta alla domanda, ma potrebbe essere la pena di conoscere per qualcuno alla ricerca questo post. E 'anche possibile installare un proxy repository Maven come nesso .

Il vostro esperto di sarebbe essere configurato per contattare il proxy Nexus locali, e Nexus sarebbe quindi recuperare (e cache) i manufatti. Può essere configurato tramite un'interfaccia web e ha il supporto per (http) proxy).

Questo può essere un vantaggio, soprattutto in un ambiente aziendale, come artefatti sono localmente disponibili e possono essere scaricati velocemente, e non sono che dipendono dalla disponibilità di repository Maven esterni più.

Per avere un collegamento alla domanda; con Nexus c'è una bella interfaccia grafica per la configurazione di proxy, e deve essere fatto su un posto solo, e non per ogni sviluppatore.

Se Maven funziona mediante delega, ma non alcuni dei plugin è invocare, provare a impostare JAVA_TOOL_OPTIONS nonché con le impostazioni -Dhttp*.proxy*.

Se avete già JAVA_OPTS basta fare

export JAVA_TOOL_OPTIONS=$JAVA_OPTS

se siete nuovi di impostare proxy per Maven Nel mio caso prima andare a controllare la tua casa clima cartella vi sia una cartella .m2 e in essa ci dovrebbe essere un file chiamato settings.xml se non crearlo, ed incolla questo e cambiare host e port , il cambiamento poi, se necessario, l'nonProxyHosts

  

cartella Home - C: \ Users \ {username}

<settings>
<proxies>
    <proxy>
        <id>httpproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>
<proxy>
        <id>httpsproxy</id>
        <active>true</active>
        <protocol>https</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>

</proxies>
</settings>

Se comunque questo non significa successo andare a fare i cambiamenti in questa posizione di cartella Home

/conf/settings.xml

Sto usando Eclipse come IDE mia
Spero che questo vi aiuterà !!

A parte le tecniche di cui sopra, con qualche sforzo, è possibile eseguire Maven attraverso proxy utilizzando biblioteca jproxyloader (c'è ad esempio a pagina come fare questo: http://jproxyloader.sourceforge.net/ ). Questo permette di impostare proxy SOCKS solo per il download di artefatti.

In soluzione fornita dal duanni (impostando -DsocksProxyHost) c'è un problema. Se si dispone di test di integrazione in esecuzione contro il database locale (o un altro test di collegamento a URL che non dovrebbe andare via proxy). Questi test smetteranno di funzionare perché le connessioni al database saranno inoltre essere indirizzate a proxy. Con l'aiuto di jProxyLoader è possibile impostare delega solo per ospite nesso. Inoltre, se si desidera si può passare connessioni al database tramite un proxy.

Alcune volte è necessario aggiungere altri tag <proxy></proxy>, e specificare i https nei tag di protocollo: <protocol>https</protocol>

I messaggi di cui sopra hanno aiutato a risolvere il mio problema. In aggiunta a quanto sopra ho dovuto apportare le seguenti modifiche per farlo funzionare:

  • Impostazioni netto Modificato JRE di Maven (\ jre \ lib \ net.properties) per utilizzare impostazioni proxy del sistema.

    https.proxyHost=proxy DNS
    https.proxyPort=proxy port
    
  • impostazioni del server proxy incluso nel settings.xml. Io non forniscono impostazioni nome utente e password per utilizzare l'autenticazione NTLM.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top