Externalizar las credenciales de SCM con Maven

¿Existe algún método para externalizar mis credenciales de SCM para que no se almacenen en el POM del proyecto? El problema es que si están contenidos en el POM del proyecto, serán visibles para todos cuando se implemente el proyecto.

Esto se puede hacer para muchos de los proveedores de SCM, supongo que Subversion es la implementación basada en su etiqueta.

Puede definir su configuración de Subversion en $ user.home / .scm / svn-settings.xml (o [maven home] /conf/.scm/svn-settings.xml, aunque esto significa que seguirán estando visibles para los usuarios de el sistema)

En ese archivo puede configurar su nombre de usuario y contraseña para el servidor de Subversion. El contenido del archivo debería verse así:

 [svn user] [svn password]  

Puede definir algunas otras propiedades en ese archivo de configuración. Para obtener más detalles, consulte la sección “Configuración del proveedor” de la página Subversion SCM .

Otros proveedores de SCM tienen un enfoque similar, por ejemplo, en CVS la configuración se almacena en cvs-settings.xml en la misma ubicación (la carpeta .scm), consulte la página CVS SCM para obtener más información.

Para algunos proveedores de SCM, puede especificar sus credenciales en la sección de settings.xml . Como use el nombre de dominio de su repository. Esto funciona para mí con mercurial. SubVersion también funciona.

Por ejemplo, dado mi pom.xml contiene:

  scm:hg:http://jukito.googlecode.com/hg/ scm:hg:https://jukito.googlecode.com/hg/ http://code.google.com/p/jukito/source/browse/  

Entonces puedo especificar mis credenciales en settings.xml como tal:

  jukito.googlecode.com philippe.beaudoin 1234567890ABC  

Me doy cuenta de que esta pregunta es antigua y de que se aceptan las respuestas, pero, en aras de la exhaustividad, quisiera proporcionar la siguiente alternativa, que podría preferirse en ciertos casos.

Motivación

A veces sucede que el mismo servidor se usa para varios propósitos, lo que requiere credenciales de usuario diferentes. Por ejemplo, se usa para alojar un repository Maven controlado por Nexus, así como un servidor SVN que tiene credenciales diferentes para el mismo usuario. En tales casos, debería haber varias entradas de con la misma id y username , pero con una password diferente. Esto, sin embargo, no es viable.

Solución

El complemento de lanzamiento de Maven admite indicadores de username y password que se pueden proporcionar como parte de la release:prepare y release:perform comandos. Los valores para el username de username y la password deben coincidir con las respectivas credenciales SVN.

 mvn release:prepare -Dusername=[username] -Dpassword=[password] 

Me las he arreglado para hacer que esto funcione al usar la solución proporcionada anteriormente, es decir, agregar una nueva configuración de servidor a mi settings.xml y dar el nombre de dominio como id.

  domain.name:port [username] [password]  

Además de la respuesta anterior, si especifica un puerto en su URL, esto también debe incluirse en server.id. Otra peculiaridad que encontré es que debes poner la contraseña entre comillas si contiene algún carácter que pueda interferir con la llamada de línea de comando.

¡No puede usar lo siguiente en su $ usuario.home / .scm / svn-settings.xm ya que no es válido! No hay elementos tales como y en (como se especifica aquí )

  [svn user] [svn password]