configurar change java maven http https proxy

java - change - maven proxy command line



¿Cómo configurar un servidor proxy para HTTP y HTTPS en la configuración de Maven.xml? (5)

Maven proxy from settings.xml se usa para http y https, así que solo necesita definir un servidor proxy y se usará para ambos, solo debe dejar una etiqueta proxy , como esta:

<proxies> <proxy> <id>myhttpproxy</id> <active>true</active> <protocol>http</protocol> <host>192.168.1.2</host> <port>3128</port> <nonProxyHosts>localhost</nonProxyHosts> </proxy> </proxies>

El protocolo anterior es el protocolo del servidor proxy, no la solicitud de proxy.

Estoy usando Maven 3.1.1 detrás de un servidor proxy. El mismo proxy maneja el tráfico HTTP y HTTPS .

Parece que no puedo decirle a maven que use settings.xml para usar ambos protocolos. Me parece que solo es posible tener un proxy activo, ya que el proxy activo que se define primero se usa, y las definiciones de proxy ''activas'' posteriores se ignoran. Esta es mi settings.xml :

<proxies> <proxy> <id>myhttpproxy</id> <active>true</active> <protocol>http</protocol> <host>192.168.1.2</host> <port>3128</port> <nonProxyHosts>localhost</nonProxyHosts> </proxy> <proxy> <id>myhttpsproxy</id> <active>true</active> <protocol>https</protocol> <host>192.168.1.2</host> <port>3128</port> <nonProxyHosts>localhost</nonProxyHosts> </proxy> </proxies>

¿Es posible configurar un proxy para HTTP y HTTPS en la settings.xml de maven.xml? Soy consciente de que podría solucionar esto pasando las propiedades del sistema Java a la invocación de Maven, como:

-Dhttps.proxyHost=192.168.1.2 -Dhttps.proxyPort=3128

¿Pero seguramente esto debe ser posible desde settings.xml ?

Los errores de Maven planteados como MNG-2305 y MNG-4394 sugieren que este problema está resuelto, pero no estoy convencido.

Alternativamente, ¿hay un "proxy proxy" que pueda ejecutar localmente al que pueda señalar maven? El "proxy proxy" enrutaría http / https en consecuencia. Aun así, todavía tendría que definir dos definiciones de proxy activas en settings.xml para que Maven dirija ambos tipos de tráfico.


Mis pruebas con Eclipse Maven muestran que el protocol en settings.xml se refiere al protocolo del servidor proxy , no al protocolo de la solicitud de URL . También muestra que Maven solo utiliza el primer servidor proxy activo de la lista e ignora el resto.

Aquí está mi evidencia:

1. La documentación dice que

activo : verdadero si este proxy está activo. Esto es útil para declarar un conjunto de proxies, pero solo uno puede estar activo a la vez.

protocolo , host, puerto: el protocolo: // host: puerto del proxy , separado en elementos discretos ".

2. El código fuente es aún más claro:

/** * Get the protocol of the proxy server. * @return the protocol of the proxy server */ public String getProtocol() { return protocol; }

3. Pruebas del mundo real (utilizando Eclipse Maven):

a. 1st proxy es un ftp falso, 2nd es http real, 3rd es https real. Resultado: FAIL.

Si el protocolo fuera para la solicitud de URL, Maven habría buscado los verdaderos servidores proxy http / https y funcionó perfectamente bien. En su lugar, utilizó el primer proxy a pesar de que era "ftp", y falló.

<proxies> <proxy> <active>true</active> <protocol>ftp</protocol> <port>123</port> <host>bogus.proxy.com</host> </proxy> <proxy> <active>true</active> <protocol>http</protocol> <port>123</port> <host>real.proxy.com</host> </proxy> <proxy> <active>true</active> <protocol>https</protocol> <port>123</port> <host>real.proxy.com</host> </proxy> </proxies>

segundo. 1er proxy es http real, 2do es https falso. Resultado: ÉXITO.

Esto demuestra que solo usó el primer proxy. De lo contrario, habría utilizado el segundo proxy para las solicitudes https, golpeó el servidor proxy falso y falló.

<proxies> <proxy> <active>true</active> <protocol>http</protocol> <port>123</port> <host>real.proxy.com</host> </proxy> <proxy> <active>true</active> <protocol>https</protocol> <port>123</port> <host>bogus.proxy.com</host> </proxy> </proxies>

do. Ambos son http, pero el primer proxy es falso, el segundo es real. Resultado: FAIL.

Esto muestra que maven no usa múltiples proxies, incluso para el mismo protocolo. De lo contrario, habría intentado el segundo proxy real y tuvo éxito.

<proxies> <proxy> <active>true</active> <protocol>http</protocol> <port>123</port> <host>bogus.proxy.com</host> </proxy> <proxy> <active>true</active> <protocol>http</protocol> <port>123</port> <host>real.proxy.com</host> </proxy> </proxies>


No estoy muy seguro, pero de acuerdo con la documentación aquí MNG-4394 , admiten comodines. Así que podrías intentar

http|https

o

<protocol>*</protocol>

y podría funcionar.


Resolví el problema con la actualización de la versión de Maven, o en otras palabras, no utilizando la versión integrada de eclipse maven, pero la versión externa 3.3.9.


Funciona sin la entrada extra ...<id>httpsproxy</id>... (como se mencionó @Krzysztof Krasoń) y con ella (como el autor de la pregunta). El problema para nosotros fue que el Eclipse->Maven->User Settings->[x] Update Settings obviamente no estaba funcionando y para probar ciertas cosas Eclipse->Maven->[x] Download repository index updates on startup debe ser verificado (por ejemplo, Maven Repositories View->Global Repositories->central->Update Index ) Y mas que todo:

Eclipse debe reiniciarse después de cada actualización de settings.xml . : - /

Supongo que es un error o problema de recarga / almacenamiento en caché. Lo probamos exitosamente con

  • Kepler (4.3) y Neon (4.6)
  • y sus versiones integradas de Maven (3.2.1 / 3.3.9), así como una versión externa 3.3.3.
  • con http:// y https:// URLs