Developing Frogtek

El blog del Departamento de Tecnología

Etiqueta: maven

¿Por qué usar Maven?

A raíz de mi grata visita a PocketWidget, en nuestro Desk-Surfing más reciente, he revisado la configuración de Maven que nos permite construir nuestros entregables.

Al volver sobre ella con Francho, repasarla y volver a aplicarla en otros proyectos, me he dado cuenta de lo potente que es y lo difícil que sería la vida sin ella.

Aparte de todas las bondades que su propia página web resalta, personalmente, me quedo con dos de ellas.

  • La herencia entre los archivos de configuración. Permitiendo eliminar duplicidades en las configuraciones y facilitando la configuración de multiples proyectos similares partiendo de una configuración padre-base.
  • Su extensibilidad mediante plugins. Los hay de todos los tipos y si no encuentras uno que se cuadre a tus necesidades, puedes desarrollarlo y usarlo fácilmente. Nosotros el que más usamos es el de Android. No ha estado siempre a la última, pero la comunidad que hay detrás es impresionante y en su última versión beta (2.9) ya soporta los Library Projects.

Solo usamos Maven en el entorno de integración continua, porque durante desarrollo con el plugin de Eclipse ADT para Android, no solemos tener problemas. Pero a la hora de automatizar, la elección ha sido clara: Maven sobre Ant.

Herramientas: Resource filtering en Maven

Nuestro querido servidor de desarrollo es el encargado de generar las versiones de nuestros productos, los publica en la web, nos avisa por e-mail de que se han generado nuevas versiones, etc. Además se encarga de que desde el mismo código salgan dos versiones diferentes de la aplicación. La versión de producción, sólo para clientes finales, y la de pre-producción donde se prueban todas las funcionalidades antes de ser pasadas a producción.

Las diferencias entre ambas versiones son mínimas pero delicadas, así que hace tiempo programamos una serie de bash scripts que hacían los cambios automáticamente en Hudson. Nada elegante pero muy útil para evitar errores al subir archivos de configuración a nuestro sistema de control de versiones.

Hace unos días, a raíz de este post de Francho, Pedro pensó que igual podíamos mejorar dichos scripts para incluir ese proceso de definición en la propia aplicación. Nosotros no usamos Ant a nivel del servidor de integración continua, sino Maven. Me tocó desempolvar el recomendable libro que me dio a conocer Maven y me puse manos a la obra.

Así descubrí el Resource filtering, plugin de Maven que permite filtrar archivos y sustituir variables definidas en el pom.xml (archivo de configuración de Maven). A continuación os muestro lo sencillo que fue deshacerme de tres o cuatro scripts y pasar a definir dicho proceso desde el propio archivo de configuración de Maven.

Para ello en primer lugar se definen las variables.

...

   false
   UA-********
   http://*******/tiendatek/prebuilds/latest.apk
   frogtek

...

Seguir leyendo

Servidor de desarrollo

Servidor de desarrollo

Os presento a nuestro servidor de desarrollo: DarwinFrog.

Debido a nuestra pasión por la integración continua, las revisiones de código, las herramientas de calidad y los tests automáticos; el pobre servidor está pluriempleado.

A modo de recuento las herramientas que habitan nuestro servidor y nos ayudan en nuestras tareas diarias son:

  • Hudson servidor de integración continua, lleno de plugins para adaptarse al desarrollo en Android y Gae.
  • Subversion en estos momentos nuestro sistema de control de versiones, estamos pensando migrar a algo más moderno como Git o Mercurial, pero no encontramos el momento adecuado.
  • Sonar plataforma de control de calidad del código, muy completa y visual.
  • Review Board herramienta de revisión de código muy útil y fácilmente enlazable con Subversion y otros sistemas de control de versiones.
  • Nexus gestor de repositorios muy útil para almacenar artefactos propios generados por Maven y así no tener que preocuparse de las versiones de las librerías, ni de las dependencias.
  • Seleniumhq plataforma para realizar tests funcionales web, versátil y fácilmente integrable con Hudson. Permite grabar los test de forma muy sencilla desde firefox entre otros.

En próximos posts intentaremos entrar en más detalle y contaros más a fondo como utilizamos y para que cada una de las herramientas.