Configurar credenciales de repositorios privados en Maven

Son muchísimos los proyectos que, en el momento de escribir este artículo, utilizan Maven para gestionar su gestión de dependencias su construcción. Maven permite, además, la encriptación y gestión de contraseñas, lo cual es muy útil para poder acceder a repositorios privados, como los gestionados con Nexus, que pueden requerir autorización. Para esto, únicamente necesitas crear un par de archivos en la carpeta ${user.home}/.m2, y cuyos nombres serán settings-security.xml y settings.xml.

Vamos a comenzar con settings-security.xml, que es el que va a contener una contraseña maestra de nuestra elección. Podemos crearla con el comando mvn de Maven.

mvn --encrypt-master-password <password>

Omite el parámetro password si estás usando una versión de Maven superior a la 3.2.1. Una vez ejecutado el comando obtendrás una versión encriptada de tu contraseña maestra. Debería tener un aspecto parecido a este:

{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ$}

Es el momento de almacenar esta contraseña en ${user.home}/.m2/settings-security.xml.

<settingsSecurity>
  <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ$}</master>
</settingsSecurity>

Y una vez que tenemos esto configurado, ya podemos guardar las credenciales que usaremos para identificarnos en el servidor privado de artefactos. Para hacer esto, usaremos el comando que se muestra a continuación, y en donde el parámetro password tiene la misma peculiaridad que en comando anterior.

mvn --encrypt-password <password>

De igual manera que antes recibiremos una versión encriptada de nuestras credenciales.

{COQLCE6DU6GtcS5P$}

En esta ocasión, la vamos a usar dentro del archivo ${user.home}/.m2/settings.xml.

<settings>
  <servers>
    <server>
      <id>mi_servidor</id>
      <username>mi_usuario</username>
      <password>{COQLCE6DU6GtcS5P$}</password>
    </server>
  </servers>
</settings>