2012-06-25 13 views
6

Como consultor, tengo varios clientes para los que estoy trabajando. Cada cliente utiliza su propio repositorio Maven interno que también está configurado para duplicar repositorios centrales y otros repositorios externos. Necesito configurar mi instalación de Maven en mi computadora portátil para que cuando esté trabajando para un cliente, utilice su repositorio interno para todo.Múltiples espejos Maven para los mismos repositorios

Pensé que podría utilizar perfiles para manejar esto, pero la configuración del espejo no se puede cambiar por perfil.

¿Alguien tiene alguna sugerencia sobre cómo acercarse a esta configuración de maven?

Nota: Una pregunta similar está aquí: How do I configure maven to access maven central if nexus server is down?, pero esa pregunta se trata de cambiar entre Central procedente de un espejo o no. Lo que necesito es que Central (y otros) provengan de un espejo o uno diferente basado en alguna propiedad/configuración/variable, etc.

+2

Finalmente encontré otra pregunta que me dio suficiente información para responder mi propia pregunta. Referencia: [link] (http://stackoverflow.com/a/1385744/1481288) Entonces, lo que he hecho es configurar mi definición de espejo usando $ {M2_MIRROR} en la URL, y luego puedo configurar una variable de entorno para apuntar al repositorio interno correcto según el cliente (o proyecto interno) para el que estoy trabajando. – MBru

+0

+1 pregunta muy muy interesante! Estoy en el mismo caso, y me preguntaba cómo lidiar con ese problema ... +1 –

Respuesta

0

Tengo un requisito muy similar en mi proyecto también. Creé dos archivos separados settings.xml, los denominé como settings_one.xml y settings_two.xml y los guardé en el MAVEN_HOME. Dependiendo del archivo que necesito, tengo un pequeño script (un archivo bat en Windows) que sobrescribe el settings.xml existente con uno de los dos archivos de configuración.

del C:\Users\<username>\.m2\settings.xml 
copy C:\Users\<username>\.m2\settings_one.xml C:\Users\tadigotl\.m2\settings.xml 
+1

No quería tener que administrar varios archivos de configuración. Creo que encontré una solución que funcionará para mí. La clave estaba en otra pregunta que no encontré cuando originalmente investigaba esto. Ver mi comentario en el OP – MBru

+0

Totalmente convencido :) – thk

0

La solución más simple que puedo sugerir es instalar git y comprometerse que .m2/settings.xml (por supuesto ignorar el propio repositorio a través de .gitignore) en Git y crea ramas apropiadas para los clientes. Cambiar la configuración se realizará por:

git checkout CUSTOMER_BRANCH 

y, además, cualquier cambio es seguido por un SCM.

2

Crear dos alias de shell:

alias build_at_home="mvn -s $HOME/.m2/home_settings.xml" 
alias build_at_work="mvn -s $HOME/.m2/work_settings.xml" 

La opción "-s" es útil para establecer explícitamente qué archivo de configuración del entorno de usar. Utilizamos este mecanismo en nuestro servidor de compilación compartido para garantizar que cada compilación de proyecto esté aislada.

Obviamente, en Windows podría crear un conjunto de archivos por lotes.

+0

Esto parece una buena mejora en la solución de intercambio de archivos de configuración. Sin embargo, hasta ahora, creo que me gusta más la solución de variable de entorno, donde el valor se usa en la configuración espejo de mi configuración individual.xml. – MBru

Cuestiones relacionadas