example - proxy maven linux
¿Cómo uso Maven a través de un proxy? (13)
Esos son causados por 2 problemas:
- Necesita agregar la configuración del proxy a su settings.xml. Aquí hay un truco en su campo de nombre de usuario. Asegúrese de que se vea como dominio / nombre de usuario. Establecer el dominio allí y poner esta barra exactamente es importante ''/'. Es posible que desee utilizar la etiqueta <! [CDATA []]> si su contraseña contiene caracteres no compatibles con xml.
- Me he dado cuenta de que maven 2.2.0 no funciona a veces a través de un proxy, donde 2.2.1 funciona perfectamente bien.
Si se omiten algunos de ellos, maven podría fallar con mensajes de error aleatorios.
Solo espero haber salvado a alguien de buscar en Google este tema durante 6 horas, como lo hice.
Quiero compartir mi experiencia de usar maven a través de un proxy.
Lo más probable es que enfrente excepciones y mensajes como:
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
¿Cómo configurar Maven para usar el servidor proxy?
Excepto por las técnicas mencionadas anteriormente, con un poco de esfuerzo, puede ejecutar maven a través del proxy utilizando la biblioteca jproxyloader (hay un ejemplo en la página de cómo hacer esto: http://jproxyloader.sourceforge.net/ ). Esto permite configurar el proxy de calcetines solo para descargar artefactos.
En la solución mencionada por duanni (configuración -DsocksProxyHost) hay un problema. Si tiene pruebas de integración que se ejecutan en la base de datos local (u otras pruebas que se conectan a la url que no deberían ir a través del proxy). Estas pruebas dejarán de funcionar porque las conexiones a la base de datos también se dirigirán al proxy. Con la ayuda de jProxyLoader puede configurar el proxy solo para el host nexus. Además, si lo desea, puede pasar las conexiones a la base de datos a través de otro proxy.
Gracias @krosenvold.
Si los cambios del archivo de configuración no funcionan, intente esto en el símbolo del sistema que tiene el archivo POM.
mvn install -Dhttp.proxyHost=abcproxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=abcproxy -Dhttps.proxyPort=8080
Esto me ha ayudado inmediatamente después de un cambio de contraseña.
Las publicaciones anteriores ayudaron a resolver mi problema. Además de lo anterior, tuve que hacer los siguientes cambios para que funcione:
Se modificó la configuración de red de JRE de Maven (/ jre / lib / net.properties) para usar la configuración de proxy del sistema. https.proxyHost = proxy DNS https.proxyPort = puerto proxy
- Se incluye la configuración del servidor proxy en settings.xml. No proporcioné la configuración de nombre de usuario y contraseña para usar la autenticación NTLM.
Para configurar Maven Proxy :
Edite la sesión de proxies en su archivo ~ / .m2 / settings.xml . Si no puede encontrar el archivo, cree 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
Edite la sesión de proxies en su {M2_HOME} /conf/settings.xml
Espero eso ayude.. :)
Para obtener detalles sobre la configuración de un proxy para Maven, consulte la mini guía .
Esencialmente debe asegurarse de que la sección de proxies en la configuración global ( [maven install]/conf/settings.xml
) o la configuración del usuario ( ${user.home}/.m2/settings.xml
) esté configurada correctamente. Es mejor hacerlo en la configuración de usuario para evitar almacenar la contraseña en texto sin formato en una ubicación pública.
Maven 2.1 introdujo el cifrado de contraseñas , pero no he podido comprobar si el cifrado se aplica a la configuración del proxy, así como a las contraseñas del repositorio (no veo por qué no lo haría).
Para obtener información, hay una configuración de proxy comentada en su configuración.xml e instrucciones sobre cómo modificarla.
Desde la mini-guía, su configuración debería verse más o menos así:
<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>
Sé que esto no es realmente una respuesta a la pregunta, pero podría valer la pena saber si alguien está buscando esta publicación. También es posible instalar un proxy de repositorio Maven como nexus .
Su experto estaría configurado para contactarse con el proxy Nexus local, y Nexus luego recuperaría (y almacenaría en caché) los artefactos. Se puede configurar a través de una interfaz web y tiene soporte para proxies (http).
Esto puede ser una ventaja, especialmente en una empresa, ya que los artefactos están disponibles localmente y pueden descargarse rápidamente, y usted ya no depende de la disponibilidad de repositorios Maven externos.
Para vincular de nuevo a la pregunta; con Nexus hay una buena GUI para la configuración del proxy, y debe hacerse en un solo lugar, y no para cada desarrollador.
Si maven funciona a través del proxy pero no de algunos de los complementos que está invocando, intente configurar también -Dhttp*.proxy*
con la -Dhttp*.proxy*
.
Si ya has JAVA_OPTS
simplemente hazlo
export JAVA_TOOL_OPTIONS=$JAVA_OPTS
Solo para agregar mis propias experiencias con esto: el proxy de mi compañía es http://webproxy.intra.companyname.com:3128
. Para que maven pueda trabajar a través de este proxy, la configuración debe ser exactamente como esta
<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 diferencia de algunos otros archivos de configuración proxy, el protocol
aquí describe cómo conectarse al servidor proxy, no qué tipos de protocolo deben ser proxies. La parte http
del objetivo debe separarse del nombre de host, de lo contrario no funcionará.
También tenga en cuenta que algunos complementos (los recursos remotos vienen a la mente) usan una biblioteca muy antigua que solo acepta la configuración del proxy a través de MAVEN_OPTS;
-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>
Puede que estés atascado en auth para este.
También tuve este problema y lo resolví editando el archivo settings.xml en mi carpeta .m2. Mi settings.xml es así ahora:
<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>
Y para agregar a este tema, aquí están mis experiencias a continuación ... Realmente extraño y lento, así que pensé que valía la pena agregar.
He tenido un problema similar al tratar de compilar el portlet-bridge en Windows, obteniendo los siguientes errores:
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
Intenté un par de cosas, siguiendo un poco de navegación:
Intenté establecer parent.relativePath como vacío para que maven no pensara que el padre era local. Esto es según la sugerencia de SO en Hudson build fail: POM padre no resoluble y en este foro nabble . Esto no tuvo efecto.
También intenté asegurar que el repositorio estuviera explícitamente enlistado en mi settings.xml, pero esto tampoco tuvo efecto.
Luego me aseguré de que mvn se viera obligado a buscar el repositorio, en lugar de confiar en su propia historia, como se discutió en este blog por Sarthon . Desafortunadamente, este tampoco era el problema.
En un momento de desesperación, revisé mis MAVEN_OPTS para asegurarme de que no estaba en problemas con la configuración de mi proxy. Estos fueron correctos, aunque con el valor sin citar:
establecer MAVEN_OPTS = -Dhttp.proxyHost = myproxy.mycompany.com -Dhttp.proxyPort = 8080 -Xmx256m
Entonces, finalmente, moví la configuración del proxy a mi settings.xml y esto funcionó:
<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>
Realmente no estoy seguro de por qué mi MAVEN_OPTS original no funcionaba (¿comillas?) Mientras la configuración de settings.xml funcionaba. Me gustaría revertir la corrección y comprobar cada paso de nuevo, pero he perdido demasiado tiempo. Informará sobre cómo y cuándo.
¿Cómo usar un proxy de calcetines?
Configure un túnel SSH a un servidor en alguna 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"