maven
general
- basado en POM1)
- 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
-DgroupId
:-DartifactId
:-DarchetypeArtifactId
: tipo de «plantilla» a usar:
mvn archetype:create -DgroupId=com.autentia.demoapp -DartifactId=autentiaNegocio
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 <a href="http://maven.apache.org/maven-v4_0_0.xsd">http://maven.apache.org/maven-v4_0_0.xsd</a>"> <modelVersion>4.0.0</modelVersion> <groupId>com.autentia.demoapp</groupId> <artifactId>autentiaNegocio</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url><a href="http://maven.apache.org/">http://maven.apache.org</a></url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
- <packaging /> : jar, war, ear, pom
- <scope /> :
- compile
- provided
- runtime
- test
- system
- <finalname />
- <dependencies > <dependency /> : añadir dependencia
múltiples dependencias cruzadas
- gestionarlo con un pom.xml «padre»
- <parent /> : los hijos heredan la configuración
- <modules /> && <packaging /> = pom
mvn
compile
: target/classestest
package
: target/$nombre.$versioninstall
: 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
clean
: borra target
perfiles
- para «entornos» de producción, pruebas, desarrollo
- desde CLI:
-P:<perfil>
plugins
- release : permite gestionar las entregas de nuestra app
mvn release:prepare
mvn release:perform
- compiler
1)
Project Object Model