Maven deploy plugin
Repositorio de terceros[editar]
Maven por defecto se baja las dependencias del repositorio maven central. Sin embargo, es posible configurar Maven para que use otros repositorios de terceros (o uno nuestro propio), tanto para bajarse dependencias como para subir a él nuestras propias dependencias
Podemos instalarnos uno para las pruebas:
- nexus. Necesita registrarse, pero si lo haces con docker nexus es más sencillo. No necesitas registrarse y basta arrancar el contenedor.
- archiva es otro repositorio que puedes bajarte e instalar para tus pruebas.
Configurar usuario y password en Maven[editar]
Es posible que para subir o descargar dependencias necesites tener un usuario y password válido en el repositorio. Imagina que el usuario es "test" y la password es "test".
Normalmente una mimsa instalación de nexus o de archiva suele darnos varios repositorios y en concreto, uno de releases y otro de snapshots para subir nuestros jar. El de releases es para jar ya terminados, con un número de versión concreto. El de snapshots es para jar que están en desarrollo y que vamos a subir con frecuencia, quizás diariamente. Suelen tener versión terminada en -SNAPSHOT.
En nuestro fichero de configuración de Maven settings.xml necesitamos añadir lo siguiente para configurar el usuario y password de ambos repositorios (que suele ser el mismo).
<settings>
...
<servers>
<server>
<id>local-releases</id>
<username>test</username>
<password>test</password>
</server>
<server>
<id>local-snapshots</id>
<username>test</username>
<password>test</password>
</server>
...
</servers>
...
</settings>
Para cada repositorio hemos puesto tres cosas
- id. El que queramos que nos sirva para identificar el repositorio.
- username válido para acceso al repositorio
- password para ese usuario.
Configurar maven para que baje dependencias del repositorio[editar]
El siguiente paso es indicarle a maven que queremos usar estos repositorios para bajar dependencias. Podeoms hacerlo en el fichero settings.xml de maven o en el fichero pom.xml del proyecto. Que lo hagamos en uno u otro lado depende de nuestros gustos, pero la lógica es
La ventaja de hacerlo en settings.xml es que no necesitas configurarlo en cada uno de tus proyectos en el fichero pom.xml. La ventaja de hacerlo en el pom.xml es que si compartes tu proyecto maven con otras personas, ya tendrían la configuración del repositorio para ese proyecto, siempre y cuando tengan configurado el usuario y password en su settings.xml o el repositorio sea de acceso anónimo.
Lo haremos en el fichero pom.xml. Tenemos que poner lo siguiente
<project>
...
<repositories>
<repository>
<id>local-releases</id>
<releases/>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<repository>
<id>local-snapshots</id>
<snapshots/>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</repository>
</repositories>
...
</project>
Hemos puesto ambos repositorios. El id debe coincidir con el que hayamos puesto en el settings.xml. El de versiones release lleva el tag <releases/>
y el de snapshots el tag <snapshots/>
. Y para cada uno de ellos la URL donde está el repositorio. Esta URL puedes varla en la interface de usuario de nexus o de archiva. En mi caso, está en propio PC (localhost), puerto 881 y con un determinado path cada una.
Con esto está todo. Cada vez que compilemos nuestro proyecto, maven buscará dependencias en el repositorio de maven central, pero también en los que tenemos configurados. Bajará la dependencia de dónde la encuentre.
Configurar maven para que suba dependencias al respositorio[editar]
Si nuestra intención es subir nuestros proyecto al repositorio, debemos hacer además la siguiente configuración, bien en el fichero pom.xml del proyecto, bien en el fichero settings.xml de configuración de Maven. Lo haremos en el fichero pom.xml. Necesitamos poner lo siguiente
<project>
<distributionManagement>
<repository>
<id>local-releases</id>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>local-snapshots</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
...
</project>
Como en el caso anterior, id debe coincidir con el que pusimos en settings.xml. En <repository>
ponemos la URL del repositorio de versiones release y en <snapshotRepository>
la URL del repositorio de versiones snapshot.
Listo, si ejecutamos el comando
mvn deploy
maven generará nuestro jar y lo subirá al repositorio de releases o al de snapshot según el número de versión termine o no en -SNAPSHOT
maven-deploy-plugin[editar]
De subir los jar al respositorio se encarga maven-deploy-plugin. Como hemos visto, si está todo bien configurado y ejecutamos mvn deploy, se subirá el jar de nuestro proyecto maven. Pero también podemos subir fichero sueltos.
Imagina que tienes por ahí un jar mijar.jar que quieres subir al repositorio. El siguiente comando te permite subir un fichero suelto
mvn deploy:deploy-file -DrepositoryId=local-snapshots -Durl=http://localhost:8081/repository/maven-snapshots/ -Dfile=mijar-1.0-SNAPSHOT.jar -DgroupId=com.chuidiang -DartifactId=mijar -Dversion=1.0-SNAPSHOT
Iría todo en una sola línea, se ha puesto en varias por claridad. Lo que se ha puesto:
- deploy:deploy-file es el comando de maven-deploy-plugin para subir un fichero suelto
- -DrepositoryId el id del repositorio al que queremos subir el fichero. Debe ser uno de los que tengamos en el settings.xml
- -Durl La URL del repositorio
- -Dfile el fichero que queremos subir
- -DgroupId el groupId que queremos dar a este fichero en el respositorio.
- -DartifactId el artifactId que queresmo dar a este fichero en el repositorio. Cuando bajemos esta dependencia, este será el nombre del fichero que nos bajemos.
- -Dversion la versión que queremos dar al fichero. Debemos poner o no -SNAPSHOT según queramos subir el fichero al repositorio de snapshots o no.