User Tools

Site Tools


apuntes:maven

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
apuntes:maven [2020/07/17 07:33] – created Santiago Faciapuntes:maven [2021/02/20 20:37] (current) – [Configurar maven para utilizar JUnit] Santiago Faci
Line 1: Line 1:
-====== Maven: Herramienta para la gestión y construcción de proyectos ======+====== Gestión de proyectos con Maven ====== 
 + 
 +{{ maven.png }} 
 + 
 +===== ¿Qué es Maven? ===== 
 + 
 +Maven es una herramienta para la gestión y construcción de proyectos Java. 
 + 
 +Permite automatizar todas las fases de desarrollo y construcción de un proyecto, como pueden ser la compilación, ejecución de test unitarios, empaquetado y despliegue. 
 + 
 +===== Crear un proyecto con Maven ====== 
 + 
 +{{ youtube>sop8dxXYMGM }} 
 +\\ 
 + 
 + 
 +===== Añadir librerias (dependencias) a un proyecto ====== 
 + 
 +Para añadir una librería a un proyecto gestionado con Maven, primero tendremos que buscarla en el repositorio de la herramienta en [[https://mvnrepository.com/|Maven Repository]]. Una vez localizada la libreria y seleccionada su versión (tiene un buscador donde podéis buscar por nombre o descripción de la librería), tendremos que copiar el código XML que describe la libreria como dependencia y copiarla al fichero //pom.xml// de nuestro proyecto, dentro de las etiquetas ''<dependencies> . . . </dependencies>'' (Puedes ver un ejemplo [[https://datos.codeandcoke.com/apuntes:maven#fichero_pom_de_ejemplo|aqui]]. 
 + 
 +<figure> 
 +{{ mvn_version_libreria.png }} 
 +<caption>Búsqueda de librerías en el repositorio</caption></figure> 
 + 
 +<figure> 
 +{{ mvn_libreria.png }} 
 +<caption>Información sobre una versión concreta de una librería</caption></figure> 
 + 
 +<figure> 
 +{{ xml_libreria_pom.png }} 
 +<caption>XML para copiar al fichero pom.xml</caption></figure> 
 + 
 + 
 +===== Fichero POM de ejemplo ===== 
 + 
 +=== Dependencias para Hibernate y el driver JDBC de MySQL === 
 + 
 +Tendremos que incluir ambas dependencias dentro de las etiquetas ''<dependencies></dependencies>'' del fichero ''pom.xml''
 + 
 +Para hibernate: 
 +<code xml> 
 +<dependency> 
 +    <groupId>org.hibernate</groupId> 
 +    <artifactId>hibernate-core</artifactId> 
 +    <version>5.3.7.Final</version> 
 +</dependency> 
 +</code> 
 + 
 +Para MySQL: 
 +<code xml> 
 +<dependency> 
 +    <groupId>mysql</groupId> 
 +    <artifactId>mysql-connector-java</artifactId> 
 +    <version>8.0.13</version> 
 +</dependency> 
 +</code> 
 + 
 +=== Dependencia para generar javadoc === 
 + 
 +De forma similar, incluimos la dependencia para que podamos generar, utilizando Maven, la documentación //javadoc// de nuestro proyecto, que se creará cuando ejecutemos el //goal// ''javadoc:javadoc'' de Maven. 
 +<code xml> 
 +<dependency> 
 +    <groupId>org.apache.maven.plugins</groupId> 
 +    <artifactId>maven-javadoc-plugin</artifactId> 
 +    <version>3.0.1</version> 
 +</dependency> 
 +</code> 
 + 
 +=== Plugin para empaquetar la aplicación y sus dependencias como un único jar ejecutable === 
 + 
 +Tendremos que añadir un plugin de maven para generar ficheros //jar//: 
 +<code xml> 
 +. . . 
 +</dependencies> 
 +<build> 
 +  <plugins> 
 +    . . . 
 +    <plugin> 
 +      <groupId>org.apache.maven.plugins</groupId> 
 +      <artifactId>maven-assembly-plugin</artifactId> 
 +      <executions> 
 +        <execution> 
 +          <phase>package</phase> 
 +   <goals> 
 +     <goal>single</goal> 
 +   </goals> 
 +   <configuration> 
 +     <archive> 
 +       <manifest> 
 +                <mainClass>com.sfaci.ejemplohibernate.Aplicacion</mainClass> 
 +              </manifest> 
 +            </archive> 
 +            <descriptorRefs> 
 +              <descriptorRef>jar-with-dependencies</descriptorRef> 
 +            </descriptorRefs> 
 +          </configuration> 
 +        </execution> 
 +      </executions> 
 +    </plugin> 
 +    . . . 
 +  </plugins> 
 +</build> 
 +</code> 
 + 
 +=== Plugin para especificar la versión de Java con la que se debe compilar === 
 + 
 +<code xml> 
 +. . . 
 +</dependencies> 
 +<build> 
 +  <plugins> 
 +    . . . 
 +    <plugin> 
 +      <groupId>org.apache.maven.plugins</groupId> 
 +      <artifactId>maven-compiler-plugin</artifactId> 
 +      <version>3.8.0</version> 
 +      <configuration> 
 +        <source>1.8</source> 
 +        <target>1.8</target> 
 +      </configuration> 
 +    </plugin> 
 +    . . . 
 +  </plugins> 
 +</build> 
 +</code> 
 + 
 +=== Fichero pom.xml completo === 
 + 
 +Y a continuación un ejemplo completo de fichero ''pom.xml'' con todas las opciones que se han comentado, donde se puede ver dónde va cada una con respecto al resto del fichero. 
 + 
 +<code xml> 
 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
 +  <modelVersion>4.0.0</modelVersion> 
 +  <groupId>com.sfaci</groupId> 
 +  <artifactId>ejemplohibernate</artifactId> 
 +  <version>0.1</version> 
 +  <name>Ejemplo Hibernate</name> 
 +  <description>Proyecto de ejemplo con Hibernate</description> 
 + 
 +  <dependencies> 
 +    <dependency> 
 +      <groupId>org.hibernate</groupId> 
 +      <artifactId>hibernate-core</artifactId> 
 +      <version>5.3.7.Final</version> 
 +    </dependency> 
 +    <dependency> 
 +      <groupId>mysql</groupId> 
 +      <artifactId>mysql-connector-java</artifactId> 
 +      <version>8.0.13</version> 
 +    </dependency> 
 +    <dependency> 
 +      <!-- Genera javadoc con el goal javadoc:javadoc --> 
 +      <groupId>org.apache.maven.plugins</groupId> 
 +      <artifactId>maven-javadoc-plugin</artifactId> 
 +      <version>3.0.1</version> 
 +    </dependency> 
 +  </dependencies> 
 +  <build> 
 +    <plugins> 
 +      <plugin> 
 +        <!-- Empaqueta la aplicación y sus dependencias en un solo jar --> 
 +        <groupId>org.apache.maven.plugins</groupId> 
 + <artifactId>maven-assembly-plugin</artifactId> 
 + <executions> 
 +   <execution> 
 +     <phase>package</phase> 
 +     <goals> 
 +       <goal>single</goal> 
 +     </goals> 
 +     <configuration> 
 +       <archive> 
 +         <manifest> 
 +                  <mainClass>com.sfaci.ejemplohibernate.Aplicacion</mainClass> 
 +                </manifest> 
 +       </archive> 
 +       <descriptorRefs> 
 +         <descriptorRef>jar-with-dependencies</descriptorRef> 
 +       </descriptorRefs> 
 +     </configuration> 
 +          </execution> 
 +        </executions> 
 +      </plugin> 
 +      <plugin> 
 +        <!-- Especifica la versión de Java que emplea el proyecto --> 
 +        <groupId>org.apache.maven.plugins</groupId> 
 +        <artifactId>maven-compiler-plugin</artifactId> 
 +        <version>3.8.0</version> 
 +        <configuration> 
 +          <source>1.8</source> 
 +          <target>1.8</target> 
 +        </configuration> 
 +      </plugin> 
 +    </plugins> 
 +  </build> 
 +</project> 
 +</code> 
 + 
 +===== Configurar maven para utilizar JUnit ===== 
 + 
 +Puedes encontrar [[https://entornos-desarrollo.codeandcoke.com/apuntes:junit|aqui]] cómo configurar tu fichero ''pom.xml'' para poder utilizar JUnit. 
 + 
 +---- 
 + 
 +(c) 2020-2021 Santiago Faci 
 + 
apuntes/maven.1594971215.txt.gz · Last modified: 2020/07/17 07:33 by Santiago Faci