Hace tiempo que usamos maven. Tenemos todos los proyectos en CVS, con estructura de directorios estilo maven. También tenemos CruiseControl para el compilado nocturno de todos ellos.
En su día, sobre una máquina Sun, configuré un repositorio maven con nuestros jar, de forma que al compilar un proyecto se bajara de ese repositorio los jar necesarios. También, con mvn deploy, podíamos subir a ese repositorio los jar de nuestros proyectos. Haciendo caso a la documentación de maven, el repositorio está accesible por medio de ftp.
Sin embargo, teníamos un problema que comenté hace tiempo. Desde windows y a través de ftp, se nos mezclaban los nombres de los ficheros con las fechas, por lo que muchas veces maven era incapaz de encontrar los jar en el repositorio ftp.
En su día intenté hacer el repositorio con http. Aprovechando que tengo montado un servidor Apache en la máquina donde corre CruiseControl, se me ocurrió que podía poner el repositorio local de jars de esa máquina en la parte pública del servidor Apache. De esta forma, la gente tendría que configurar maven de forma que un repositorio más fuera con http el del servidor Apache con CruiseControl.
Pues no iba, no había manera. Cuando alguien compilaba e intentaba acceder a este repositorio web, maven se quedaba bloqueado uno o dos minutos intentando bajar los jar y finalmente daba un error. Lo dejé por imposible dando por supuesto que era uno de esos bugs que tiene maven que a veces salen.
Sin embargo, hoy me puse a ello y volví a intentarlo. Volví a hacer todo el montaje… y el mismo resultado. Trabajamos contra un proxy, así que me dio por pensar que quizás maven estaba buscando mi servidor en internet y por eso no lo encontraba. Sin embargo, por más que miraba en la configuración de maven, aparentemente estaba bien. Indicaba en <nonProxyHosts> que no usara proxy con mi servidor.
Pues bien, el problema era haberme fiado de la documentación. En la referencia de proxies del settings.xml de Maven pone que en <nonProxyHosts> se ponen los servidores con los que no se quiere usar proxy y que en el ejemplo se usa como separador una barra vertical |, pero se admite también comas. Pues efectivamente, como tan bien indica la documentación, las comas NO VALEN. Si pones comas, no se hace caso y esos servidores se buscan a través del proxy de internet. Puse las | y todo solucionado.
Al final, una pequeña maravilla. El servidor de CruiseControl es el que compila, genera todos los jar y además accede a internet para traerse otros jar como log4j, junit y demás. Los programadores configuramos maven para acceder a este servidor nuestro y no necesitamos tener acceso a internet. Todos los jar que necesitamos, tanto propios como ajenos, estan ahí y se actualizan, con CruiseControl, todas las noches. Esto nos viene estupendo para los PC de los proyectos, a los que por motivos de seguridad no se les da acceso a internet. Hasta ahora, en ellos, no podíamos usar maven. Ahora ya podemos. Es más, si alguien necesita el equivalente a un mvn deploy, le basta con pulsar el botón "build" del CruiseControl en el proyecto correspondiente.
Bueno, en realidad en los PC de los proyectos sí podíamos, y de hecho estabamos, usando maven. Habiamos instalado un proxy maven, pero no acaba de funcionar todo lo bien que nos hubiera gustado. En el acceso a determinados jar internos de maven -de algún plugin- el proxy maven fallaba y al final lo teníamos que copiar a mano.