Integración rápida de Maven con Hudson y Archiva
Posted: June 5th, 2010 | Author: Edu | Filed under: Archiva, Continuous-Integration, Hudson, Java, Maven, Tools | Tags: Archiva, Continuous-Integration, Hudson, Java, Maven, Tools | No Comments »Supongamos que tenemos un proyecto dividido en varios módulos de funcionalidad y que cada módulo de funcionalidad genera un artefacto. Por ejemplo:
- core.jar: Almacena la lógica de negocio común.
- web.war: Aplicación web que hace uso de la lógica de negocio (utiliza core.jar).
Cada vez que modificamos la lógica de negocio subiendo código al gestor de versiones y se genere un artefacto core.jar queremos que se genere un nuevo artefacto web.war que incluya las modificaciones de el primero. Esto lo podemos conseguir fácilmente con Hudson, Maven y Archiva. Partimos de la base que tenemos el servidor Hudson montado y que tenemos dos proyectos definidos “core” y “web”. Ambos proyectos funcionan con Maven.
Instalación y arranque rápido de Apache archiva:
- Descargar y descomprimir Apache Archiva en la máquina que vaya a hacer de servidor de repositorios Maven. En mi caso es la misma máquina dónde se encuentra Hudson.
- Ejecutar Apache Archiva:
# $ARCHIVA_HOME/bin/archiva console
- Definir los repositorios que consideremos oportunos y usuarios con perfil “Repository Manager”. En mi caso trabajaré con el repositorio “snapshots” que viene definido por defecto.
Configuración Maven:
- Editar el fichero pom.xml de todos los proyectos y añadir el repositorio archiva:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <repositories> ... <repository> <id>archiva.snapshots</id> <url>http://localhost:8081/archiva/repository/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> ... </repositories> |
- Editar el fichero pom.xml del proyecto web y añadir la dependencia al proyecto core, por ejemplo:
1 2 3 4 5 | <dependency> <groupId>com.sourcerebels</groupId> <artifactId>core</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> |
- Editar el fichero de configuración de Maven (settings.xml):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <servers> ... <server> <id>archiva.internal</id> <username>usuario_archiva</username> <password>password_archiva</password> </server> <server> <id>archiva.snapshots</id> <username>usuario_archiva</username> <password>password_archiva</password> </server> ... </servers> |
Configuración Hudson:
- Para cada uno de los artefactos del proyecto configuraremos que se despliegue en el repositorio “archiva.snapshots”:
- Con este punto conseguiremos que cada vez que se genere una nueva versión del fichero core.jar esta se archive en el repositorio Maven. Ahora para que el proyecto web se construya cuando alguno de los snapshots de los que depende sean construidos:
Esto es todo

