miércoles, 19 de agosto de 2020

Maven Tips & properties

En este post vamos a utilizarlo para compilación de variables de Maven y su funcionalidad.

Vamos a hacer una pequeña recopilación de variables, propieades y trucos básicos de Maven que nos pueden ayudar a un mejor entendimiento y manejo del mismo.

Empezaremos por las variables, las cuales podemos utilizar dentro del pom.xml y que nos darán acceso a información dentro del mismo proyecto. Como pueden ser:
  • project: Objeto referencia del proyecto. A través del cual podemos acceder al resto de sus valores. 
  • parent.project: Objeto referencia al proyecto padre dentro de un proyecto multimódulo.
  • env: Objeto referencia a variables de entorno del sistema.
  • settings: Objeto referencia a la configuración local de maven.
  • maven: Objeto referencia al software Maven ejecutor.
A través de estos objetos podemos acceder a distintas propiedades dentro de cada uno de ellos, como pueden ser:
  • project.artifactId: Identificador del proyecto
  • project.groupId: Identificador del proyecto
  • project.version: Identificador del proyecto.
  • project.basedir: Carpeta principal del proyecto. 
  • project.build.directory: Carpeta donde se ubica el código compilado, normalmente el target. 
  • project.build.finalName: El nombre del fichero del proyecto una vez empaquetado.
  • maven.build.timestamp: Fecha actual en el momento de hacer el build. 
  • maven.repo.local: Ruta al repositorio local del usuario ${user.home}/.m2/repository
  • settings.localRepository: Ruta al repositorio local del usuario ${user.home}/.m2/repository
Estas variables deben usarse entre llaves y anteponiendo el simbolo del dollar. Ejemplo: ${project.groupId}. En esta página podreis encontrar el listado completo.

También existen ciertas propiedades que podemos configurar para modificar el comportamiento del proyecto, como son:
  • maven.compiler.source: Nos permiten indicar el nivel de compilación de nuestro código
  • maven.compiler.target: Nos permite indicar el nivel de compilación, del código compilado. 
  • project.build.sourceEncoding: Nos permite indicar el charset asociado a nuestro código fuente. 
  • project.reporting.outputEncoding: Nos permite indicar el charset asociado al código generado. 
Otra asunto a tener muy en cuenta son las fases de maven. Esto es un apartado fundamental y que mucha gente desconoce. Debemos saber el funcionamiento del ciclo de vida de Maven, que este está compuesto por fases y que la ejecución de unas implica la ejecución previa de las anteriores. 
Es decir, que si indico el comando mvn package, le estaré indicando que ejecute la fase del ciclo de vida package, pero que para llegar a ella pasaré anteriormente por las fases validate, compile y test
  • validate: valida que el proyecto sea correcto y esta la información mínima y necesaria. 
  • compile: compila el código fuente.
  • test: prueba el código fuente usando un framework de testing unitario. 
  • package: empaqueta el código comilado en un formato distribuible.
  • integration-test: procesa y despliega el paquete generado, si es preciso, en un entorno específico donde se ejecutarán los tests de integración.
  • verify: verifica que el paquete sea correcto.
  • install: almacena el paquete generado en el repositorio local.
  • deploy: almacena el paquete generado en un repositorio remoto.  
Aparte hay dos fases que se saltan este ciclo de vida y que su ejecución no aplica la ejecución de otra fase. Estas son: 
  • clean: permite limpiar el directorio build.
  • site: genera la documentación del proyecto dentro de la carpeta site.
Por último también debemos entender que estas fases estan asociadas a goals. Y que estos goals ejecutados en cada fase, funcionan de una forma en función del tipo de proyecto (indicado en base a su empaquetado, propiedad packaging). Es decir que al ejecutar mvn package, en un proyecto de tipo JAR, se ejecutará el jar:jar y al ejecutarlo sobre un proyecto WAR, se ejecutará war:war.

No hay comentarios:

Publicar un comentario