= maven {{tag>development addendum}} /via: [[https://www.adictosaltrabajo.com/tutoriales/maven/]] == general * basado en POM((Project Object Model)) * [[http://maven.apache.org]] * patrones y estándaares * POM : descripción del proyecto, de que se compone -> maven se encargará de hacer * gestión de librerias (incluso transitivas) == arquetipo * ≡ plantilla; estructura de directorios y ficheros * [[http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html]] * ''-DgroupId'' : * ''-DartifactId'' : * ''-DarchetypeArtifactId'' : tipo de "plantilla" a usar: mvn archetype:create -DgroupId=com.autentia.demoapp -DartifactId=autentiaNegocio == pom.xml 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"> 4.0.0 com.autentia.demoapp autentiaNegocio jar 1.0-SNAPSHOT Maven Quick Start Archetype http://maven.apache.org junit junit 3.8.1 test * : jar, war, ear, pom * : * compile * provided * runtime * test * system * [[http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html]] * * : añadir dependencia === múltiples dependencias cruzadas * gestionarlo con un pom.xml "padre" * : los hijos heredan la configuración * && = pom == mvn * ''compile'' : target/classes * ''test'' * ''package'' : target/$nombre.$version * ''install'' : guarda proyecto en repositorio * **~/.m2/repository** : se puede cambiar de ubicación, guarda versiones de los diferentes ficheros, para que cada proyecto use el adecuado * [[http://maven.apache.org/guides/introduction/introduction-to-repositories.html]] * ''clean'' : borra target * ciclo de vida : [[http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html]] == perfiles * para "entornos" de producción, pruebas, desarrollo * desde CLI: ''-P:'' == plugins * release : permite gestionar las entregas de nuestra app * ''mvn release:prepare'' * ''mvn release:perform'' * compiler