2010-08-30 24 views

Respuesta

18

Hay una propiedad del sistema java.net.useSystemProxies que se puede establecer en true (en plataformas Windows y Linux) para indicarle a la JVM que use la configuración de proxy del sistema. Desde el Java Networking and Proxies guía:

Antes de ver en detalle cómo escribir un tal ProxySelector, vamos a hablar de la opción por defecto. J2SE 5.0 proporciona una implementación predeterminada que refuerza la compatibilidad con versiones anteriores. En otros términos, el valor predeterminado ProxySelector comprobará las propiedades del sistema descritas anteriormente para determinar qué proxy usar. Sin embargo, hay una característica nueva y opcional: en los sistemas Windows recientes y en las plataformas Gnome 2.x es posible indicar el valor predeterminado ProxySelector para usar la configuración proxy del sistema (ambas versiones recientes de Windows y Gnome 2.x le permiten establecer proxies globalmente a través de su interfaz de usuario). Si la propiedad del sistema java.net.useSystemProxies está configurada en true (de manera predeterminada está configurada en false por compatibilidad), entonces el valor predeterminado ProxySelector intentará usar estas configuraciones. Puede establecer esa propiedad del sistema en la línea de comando, o puede editar el archivo de instalación de JRE lib/net.properties, de esa manera debe cambiarlo solo una vez en un sistema determinado.

Pero esto sólo funcionará para los java.net.* clases, no para commons-httpclient, jsch, etc. Así que esto no resuelve todo el problema y Maven en realidad no lo soportan (esto se registra como MNG-728) .

En otras palabras, me temo que tendrá que configurar la configuración del proxy en su ~/.m2/settings.xml.

23

echaste un vistazo a http://maven.apache.org/guides/mini/guide-proxies.html?

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

NOTA: Esto no afecta a código Java! Estas configuraciones de proxy son configuraciones de proxy del repositorio Maven.

+5

siempre recuerde revisar su casa $/.m2/settings.xml y $ M2_HOME/conf/configuración.xml, tardé aproximadamente media hora en deshabilitar el proxy porque estaba habilitado en la carpeta de binarios maven –

+1

Es posible que deba crear el archivo si ya no existe – Shatu

+2

nombre de usuario y contraseña no es obligatorio. – lwpro2

0

En Netbeans tienes que eliminar el -Djava.net.useSystemProxies=true de Tools-> option->java->Maven. Una vez que lo elimine, Maven lee la configuración del proxy desde settings.xml.

4

Aquellas personas que necesitan para establecer estos valores a través de la línea de comandos se puede utilizar lo siguiente:

MAVEN_CLI_OPTS: "-DproxySet=true -Dhttp.proxyHost=yourProxyHost -Dhttp.proxyPort=9999 -Dhttp.nonProxyHosts=mvnrepository.com" 

Uso:

mvn $MAVEN_CLI_OPTS test 

Advertencia: nonProxyHosts propiedad no funciona correctamente para mí cuando se la usa de un entorno de CI. Sospecho que podría deberse a que los caracteres de las tuberías no se interpretan correctamente en la sintaxis YAML de Gitlab, pero no encontré la manera de solucionarlo.

Fuente: https://confluence.atlassian.com/jirakb/java-option-http-nonproxyhosts-does-not-work-214863640.html

+0

Como tengo que usar un proxy NTLM en una empresa, esta es la única sugerencia que funciona para mí que es un tanto sucinta. Gradle opts funciona a la perfección. –

Cuestiones relacionadas