= 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