repositories multiple generate example ejemplo configurar maven-2 proxy settings profile mirror

maven 2 - multiple - ¿Los ajustes del servidor/proxy de Maven se pueden configurar según la ubicación?



maven setting multiple repositories (4)

Así que no estoy seguro de cuál es la mejor manera de lograr esto, pero básicamente tengo una computadora portátil que uso en el trabajo para los proyectos de Maven. Funciona bien cuando estoy en el trabajo, pero tan pronto como salgo por la puerta de su servidor corporativo y proxy maven, a menudo tengo que hacer un montón de manipulaciones manuales del archivo settings.xml cuando estoy en casa si no estoy VPN''ed en:

  • Tenemos un servidor proxy Maven Repository instalado por la empresa para almacenar algunos de nuestros propios artefactos y manejar a ser el intermediario para nuestros artefactos de uso común.
  • Tenemos un proxy http que usamos para conectarnos con el mundo exterior.

Ambas configuraciones han sido manejadas por mi archivo settings.xml para configurar un único grupo Nexus y servidores proxy . Si no estoy conectado a la red privada virtual (VPN) mientras estoy fuera de la oficina, tengo que deshacerme de la configuración.xml cada vez que no esté en ella, luego volver a cambiarla cuando esté en ella.

¿Qué soluciones ha encontrado alguien más para manejar esto? He intentado perfiles para administrar el proxy, pero parece que no logro que funcione correctamente, y está empezando a parecer bastante feo. ¿Hay algunas configuraciones de configuración que pueden detectar cuando no estoy detrás del proxy en el trabajo y no uso el servidor proxy corporativo o el servidor Maven?


Aunque puedo pensar en alguna solución basada en el perfil para manejar el proxy (básicamente, leer el valor <active> de una propiedad definida en un perfil), esto no estaría completamente automatizado (la activación del perfil no es compatible con la red) a menos que puede encontrar un archivo que esté presente o no dependiendo de su ubicación (en cuyo caso, podría usar un activador de archivo existente / faltante, pero esto es un poco intrépido). De todos modos, esto resolvería solo una parte del problema porque los espejos no se pueden declarar en los perfiles (ver MNG-3525 ).

Entonces, en lugar de intentar controlar esto con un perfil, mi sugerencia sería usar dos settings.xml y pasar su archivo settings-home.xml con la opción de línea de comando -s cuando esté en casa.

Otra opción sería automatizar los cambios en su settings.xml con una secuencia de comandos (Groovy sería una buena opción, ya que alguien informó en MNG-3525 ).


Descubrí que las variables de entorno de uso para establecer no nonProxyHosts junto con proxy y noproxy shell son la solución más conveniente cuando se cambia entre redes con proxy y sin él.

En settings.xml , configure proxy con

<host>proxy.corporation.int</host> <port>8080</port> <nonProxyHosts>${env.MAVEN_NONPROXY}</nonProxyHosts>

Luego en ~/.profile set

export MAVEN_NONPROXY_PROXY=''*.corporation.int|local.net|some.host.com'' export MAVEN_NONPROXY_NOPROXY=''*'' alias proxy="export MAVEN_NONPROXY=/"$MAVEN_NONPROXY_PROXY/" && export all_proxy=http://proxy.corporation.int:8080" alias noproxy="export MAVEN_NONPROXY=/"$MAVEN_NONPROXY_NOPROXY/" && unset all_proxy"


Para hacer el cambio en roaming, simplemente ejecutaría desde un shell:

[me@linuxbox me]$ proxy

o

[me@linuxbox me]$ noproxy

Obviamente, tanto el alias proxy como el noproxy pueden incluir muchos más cambios que la configuración de MAVEN_NOPROXY y all_proxy .


Me sentí frustrado por el mismo problema: tener que editar manualmente settings.xml cuando se desplaza entre redes. Tanto de hecho, que escribí un complemento de Maven que permite el descubrimiento automático de la configuración del proxy. La implementación actual utiliza la biblioteca proxy-vole escrita por Bernd Rosstauscher para detectar configuraciones proxy basadas en la configuración del sistema operativo, el navegador y la configuración del entorno.

Acabo de lanzar el código fuente del complemento en Github, bajo una licencia de Apache 2.0: https://github.com/volkertb/autoproxy-maven-plugin

Le invitamos a probarlo y a ver si satisface sus necesidades. Cualquier comentario o contribución son bienvenidos!

(Nota: no necesariamente tiene que agregar el complemento al POM de su proyecto. También puede invocarlo desde la línea de comandos, después de haberlo instalado. Consulte el archivo README en el sitio para obtener más detalles)


Puede configurar MAVEN_OPTS cuando necesite activar un proxy:

export MAVEN_OPTS="-Dhttp.proxyHost=my-proxy-server -Dhttp.proxyPort=80 -Dhttp.nonProxyHosts=*.my.org -Dhttps.proxyHost=my-proxy-server -Dhttps.proxyPort=80 -Dhttps.nonProxyHosts=*.my.org"