Archiva: Gestión de repositorios maven (II).
1. Introducción
En el anterior tutorial de Archiva (pincha aquí) mostramos su instalación y funcionalidades. Con éste queremos enseñaros un pequeño ejemplo de uso que os permita ver los pasos a seguir para utilizar Archiva en vuestros proyectos maven.
2. Repositories
El primer paso será configurar los tres repositorios. Nos dirigimos a «Managed Repositories» situado dentro de la opción «Repositories» y pulsamos sobre el enlace «Add».
Figura 1. Creación de repositorio gestionado.
Consejo
Para desacoplar la aplicación de Archiva de los repositorios es recomendable que la ubicación de los repositorios gestionados que vienen por defecto con Archiva se modifique. Con esta medida conseguimos que cualquier actualización que se realice de la aplicación no suponga por error la perdida de los repositorios. En nuestro caso, los repositorios que demos de alta estarán situados en el path «/opt/maven/repositories».
2.1 Repositorio de releases.
Al tratarse de un repositorio donde únicamente se van a depositar releases tenemos que seleccionar entre las propiedades del repositorio la opción «Releases Included». También se debe seleccionar la opción «Scanneable» para que Archiva pueda realizar búsquedas sobre dicho repositorio.
- Identifier: adictosrepo
- Name: Ejemplo de Repositorio de Adictos al Trabajo
- Directory: /opt/maven/repositories/adictosrepo/maven2
- Type: Maven 2.x Repository
Figura 2. Creación de repositorio de releases.
2.2 Repositorio de snapshots.
De igual forma se creará el repositorio de snapshots, pero esta vez deberemos seleccionar la opción de «Snapshots Included» en vez de «Releases Included».
- Identifier: snapadictosrepo
- Name: Ejemplo de Repositorio de Adictos al Trabajo de Snapshot
- Directory: /opt/maven/repositories/snapshotadictos/maven2
- Type: Maven 2.x Repository
Figura 3. Creación de repositorio de snapshots.
2.3 Repositorio de caché.
Este repositorio se va utilizar como almacén de todos los artefactos (releases o snapshots) que se obtengan de los repositorios remotos que hayamos configurados en Archiva. Por tanto, debemos seleccionar las opciones de «Release Included» y «Snapshots Included».
- Identifier: repocache
- Name: Cache de los artefactos de los repositorios remotos
- Directory: /opt/maven/repositories/repocache/maven2
- Type: Maven 2.x Repository
Figura 4. Creación de repositorio de caché.
3. Permisos de acceso.
Creados los repositorios, debemos dar permisos de acceso a los usuarios. Nos dirigimos a «User Management», seleccionamos un usuario, pulsamos sobre el enlace «Edit Roles» y activamos el check «Repository Manager» o «Repository Observer» dependiendo si el usuario tendrá acceso lectura/escritura o solo lectura, respectivamente. En nuestro caso activaremos el rol «Repository Manager».
Figura 5. Permisos de acceso a repositorios.
4 Network Proxy.
Como nuestra organización tiene Proxy, debemos darlo de alta en Archiva. Vamos a «Network Proxy» y pulsamos sobre el enlace «Add Network Proxy».
Figura 6. Creación de un proxy.
5 Proxy Connectors.
Como hemos comentado anteriormente, vamos a tener un repositorio gestionado como almacén de artefactos de repositorios remotos. Por defecto Archiva viene configurado con dos repositorios remotos: el repositorio central de maven y el repositorio del paquete java.net. Si tuviéramos la necesitad de añadir más (que no es nuestro caso) debemos pulsar el enlace «Add» situado en la sección «Remote repositories» de la opción «Repositories».
Cuando tengamos todos los repositorios remotos, vamos a la opción «Proxy Connectors» y pulsamos sobre el enlace «Add». Aquí asociaremos el repositorio gestionado «repocache» con cada uno de los repositorios remotos y asignándoles el proxy creado.
Figura 7. Creación de un proxy connector.
6 Settings.xml.
Ahora debemos cambiar un par de cosillas de nuestro fichero settings.xml. Lo más importante, es configurar maven para que todas las peticiones que se hagan para obtener artefactos remotos se hagan a través del Proxy Connectors que hemos configurado en Archiva. Para ello debemos asignar nuestro repositorio de almacén de artefactos remotos (repocache) como mirror de todos los repositorios.
<mirrors> <mirror> <id>repocache</id> <mirrorOf>*</mirrorOf> <name>Repositorio cache Adictos.</name> <url>http://192.168.0.129:8080/archiva/repository/repocache/</url> </mirror> </mirrors>
A continuación definimos el resto de repositorios:
<profiles> .... <profile> <id>Repositorios Locales</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>adictosrepo</id> <url>http://192.168.0.129:8080/archiva/repository/adictosrepo/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapadictosrepo</id> <url>http://192.168.0.129:8080/archiva/repository/snapadictosrepo/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> ....< </profiles>
Si los repositorios necesitan autenticación debemos añadir las siguientes líneas:
<servers> .... <server> <id>adictosrepo</id> <username>user</username> <password>password</password> </server> <server> <id>repocache</id> <username>user</username> <password>password</password> </server> <server> <id>snapadictosrepo</id> <username>user</username> <password>password</password> </server> .... </servers>
7 Pom.xml.
Por último, creamos nuestro proyecto maven, utilizando en nuestro caso el arquetipo "maven-archetype-webapp". Como podréis ver a partir de este momento todas las peticiones que se hacen a los repositorios remotos se realizan a través de nuestro repositorio "repocache".
Figura 8. Creación de un proyecto web (I).
Figura 9. Creación de un proyecto web (II).
Figura 10. Creación de un proyecto web (III).
Añadimos al pom.xml una dependencia con la librería de log4j y añadimos los repositorios de distribución, quedando el siguiente fichero:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>adictos</groupId> <artifactId>archiva</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>archiva Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.8</version> </dependency> </dependencies> <distributionManagement> <repository> <id>adictosrepo</id> <url>http://192.168.0.129:8080/archiva/repository/adictosrepo</url> </repository> <snapshotRepository> <id>snapadictosrepo</id> <url>http://192.168.0.129:8080/archiva/repository/snapadictosrepo</url> </snapshotRepository> </distributionManagement> <build> <finalName>archiva</finalName> </build> </project>
A continuación subimos nuestro artefacto 1.0-SNAPSHOTS al repositorio. Si accedemos a Archiva podremos ver como nuestro artefacto se ha subido al repositorio de snapshots que hemos configurado.
Figura 11. Deploy de un artefacto snapshot (I).
Figura 12. Deploy de un artefacto snapshot (II).
Lo mismo ocurre si generamos una release del artefacto, cambiamos la versión a 1.0 y ejecutamos el goal deploy, pero esta vez el artefacto se depositará en el repositorio de releases.
Figura 13. Deploy de una release.
Si ahora nos vamos a la opción "Browse" veréis todos los artefactos almacenados en los repositorios, no solo el que hemos subido sino también los artefactos remotos cacheados que se han solicitado al repositorio "repocache".
Figura 14. Browse.