Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Aplicaciones java con Maven

Aplicaciones java con Maven

Autor jc mouse domingo, junio 25, 2017

¿Qué es Maven?

Maven es una herramienta de software para la gestión y construcción de proyectos Java. Provee un conjunto de estándares de construcción, un modelo de repositorio de artefactos y un motor de software que administra y describe los proyectos. Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos.

Para crear proyectos java con Maven se usan comandos, sin embargo el soporte para Maven está totalmente integrado en NetBeans por lo que desarrollar un proyecto que utiliza el framework Maven es casi idéntico al desarrollo de un proyecto standar, sin embargo existen algunas diferencias relacionadas con la forma en que Maven  crea proyectos y trabaja con dependencias, diferencias que iremos aprendiendo a reconocer y utilizar en este post.

En este tutorial se muestra como crear una aplicación java con Maven, el IDE Netbeans y una librería para el parseo de HTML Jsoup.

Necesitamos:

  • Netbeans 8.x
  • Conexión a internet
  • JSoup Librería para parsear HTML (https://jsoup.org/)

Paso 1: El Proyecto Maven

Archivo → New Project → en Category seleccionamos «Maven» → y en Projects seleccioamos «Java Application«, presionamos siguiente para continuar.

En la siguiente ventana escribimos el nombre del proyecto «TestMaven» e indicamos su ubicación

maven netbeans

Pero tenemos unos cuantos campos más que rellenar:

  • ID del Artefacto: TestMaven, es el nombre del proyecto (sin espacios)
  • ID del Grupo: com.jcmouse, indica a que organización/grupo pertenece este artefacto (org.java, bo.edu.umss, etc) , un grupo puede tener varios artefactos, pero un artefacto solo puede pertenecer a un grupo.
  • Versión: 1.0.1, tal cual se refiere a la versión del artefacto
  • Paquete: com.jcmouse.testmaven, son las carpetas donde ira el código java

Para crear el proyecto, presionamos «Terminar»

maven framework

La estructura del proyecto es ligeramente diferente a la de una aplicación standar de Java SE pero ya veremos que no hay nada que temer, ya que funcionan casi de la misma forma.

Paso 2.  Dependencias

Cuando trabajamos con una aplicación standar de Java SE, descargamos las librerías (*.jar) que necesitamos y las colocamos en la carpeta «Bibliotecas«, en Maven lo que hacemos es declarar esas librerías en el archivo POM ( Project Object Model)

Si ingresamos a la sección de descarga de JSOUP (https://jsoup.org/download), tenemos la opción de descargar el *.JAR pero más abajo encontraremos la opción de como usar la librería con Maven

jsoup example

En el proyecto en netbeans, clic derecho sobre la carpeta «Dependencias» → Agregar dependencias, en la ventana que aparece rellenamos los campos de JSOUP como se ve en la siguiente imagen:

dependencias

 

Para agregar las dependencias, presionamos el botón «agregar» y veremos como aparece la librería JSOUP en la sección de dependencias

pom xml

Y si abrimos el archivo pom.xml con doble clic, vemos como se agrego en XML las dependencias a la librería JSOUP

artefactos id maven

de igual forma, si presionamos el botón de «Grafica» se nos pintara una representación de la dependencia

grafica maven

Paso 3: Usando la dependencia

La dependencia se usa igual que cualquier otra librería, lo único que cambio en maven, es la forma de hacer referencia a dicha librería.

En la carpeta de fuentes, crea una clase Main.java, clic derecho sobre el proyecto → Properties (Propiedades).

Debemos también indicar al proyecto que esta clase, es la clase principal, clic en Ejecutar, en Main Class, presionando el botón examinar, seleccionamos la clase Main que acabos de crear y clic en Aceptar para guardar los cambios.

A continuación agregamos el siguiente código:

package com.jcmouse.testmaven;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
/**
 * @see http://www-jc-mouse.net
 * @author mouse
 */
public class Main {
    
    public static void main(String[] args) {
        //Codigo HTML
        String HTML = "<html><head>"
                + "<title>Mi Primera Pagina Web</title>"
                + "</head>"
                + "<body>HOLA MUNDO CRUEL!!!</body>"
                + "</html>";
        //se obtiene etiquetas HTML
        Document document = Jsoup.parse(HTML);
        Elements allElements = document.getAllElements();        
        allElements.stream().forEach((element) -> {
            System.out.println( element.nodeName() + " " + element.ownText());
        });
    }
    
}

La librería JSOUP nos sirve para parsear etiquetas HTML, el código de arriba es un ejemplo trivial cuyo único objetivo es demostrar el uso de una librería con Maven.

Paso 4. Ejecución 

Al igual que un proyecto standar java se, ejecutamos con clic derecho sobre el proyecto → run

Importante, si es la primera vez que usas Maven, la compilación y ejecución del proyecto se tardara unos minutos (deprendiendo de tu conexión a internet) esto porque Maven debe descargar algunas otras librerías que necesita para funcionar, ademas de que esta creando un repositorio local en tu computadora. De eso hablaremos en otra ocasión.

El resultado en consola de este proyecto es el siguiente:

console ide html

Paso 5. Ejecutables

Como mencionamos en un principio la estructura de una aplicación en Netbeans con Maven es diferente a la de una aplicación standar java se, y esto es igual con sus carpetas en el disco.

src target structure

En la carpeta SRC se guardan las fuentes del proyecto, mientras en la carpeta TARGET, se encuentran otros archivos referentes a Maven, la compilación y los ejecutables JAR.

Si hacemos Clic derecho sobre el proyecto -> Build y abrimos la carpeta target, veremos que se genero un archivo jar ejecutable «TestMaven-1.0.1.jar«, pero este jar no contiene el archivo manifest donde se indica la clase principal Main y las dependencias de este, si tratamos de ejecutarlo tendremos problemas. A continuación dos formas de generar ejecutables con proyectos con Maven.

Generar solo Jar Ejecutable 

Abre el archivo pom.xml y antes de la etiqueta </project> agrega el siguiente código:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.jcmouse.testmaven.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

Donde en <mainClass> indicamos los paquetes y clase Main.

Clic derecho sobre el proyecto -> Build para generar el *.jar

Nuestra aplicación no cuenta con interfaz por lo que deberemos ejecutarlo desde consola, es decir:

simbolo del sistema

Importante en este caso la librería JSoup debería estar en el PATH o en la misma carpeta que nuestro archivo TestMaven-1.0.1.jar, caso contrario nos dará error (java.lang.NoClassDefFoundError: org/jsoup/Jsoup).

Ejecutable JAR con dependencias

Abre el archivo pom.xml y antes de la etiqueta </project> agrega el siguiente código:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.jcmouse.testmaven.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>                         
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Donde en <mainClass> indicamos los paquetes y clase Main.

Clic derecho sobre el proyecto -> Build para generar el *.jar

En este caso veremos como nuestro jar ha crecido, esto porque ademas del código de nuestra aplicación (4KB), adjunto las clases de la librería JSoup.

compile jar maven dependency

Y para terminar, lo ejecutamos desde consola:

java -jar TestMaven-1.0.1-jar-with-dependencies.jar

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Gráfico de lineas con jfreechart

Gráfico de lineas con jfreechart

Los gráficos de líneas muestran una serie como un conjunto de puntos conectados mediante una línea. Los valores se repre...

MariaDB: Tablas Virtuales (Vistas – View)

MariaDB: Tablas Virtuales (Vistas – View)

¿Qué es una vista? Una vista (View) o Tabla Virtual, es una forma lógica de ver los datos ubicados en varias tablas, es...

Introducción a MariaDB con Java

Introducción a MariaDB con Java

Maria DB  es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL, pero con un rendimiento similar...

Añadir Splash Screen en Java/Netbeans

Añadir Splash Screen en Java/Netbeans

¿Splash Screen? El splash screen o traducido al aspañol 😉  es una «Pantalla de bienvenida» que se muestra cuando se ejec...

Agregar soporte para JNLP en servidor Apache

Agregar soporte para JNLP en servidor Apache

Java Network Launching Protocol (JNLP) es una especificación usada por Java Web Start. Esta especificación, permite tene...

Uso de Tiles para crear fondo para aplicaciones

Uso de Tiles para crear fondo para aplicaciones

Un Tile o azulejo, es una parte seccionada de una imagen, por ejemplo la imagen de abajo (chica anime) esta dividida en...

Comparte lo que sabes

Categorias

Últimas entradas

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Herramientas

Generador de Enlaces a Whatsapp