Maven – Crear un proyecto Java

En este artículo discutiremos cómo crear un proyecto Java usando Maven y personalizar el proyecto generado. Cubriremos cómo crear un proyecto usando un Arquetipo de Maven y cómo personalizar el proyecto generado para satisfacer sus necesidades.

Crear un proyecto Java utilizando Arquetipos de Maven

Es posible crear un arquetipo de Maven personalizado, pero para este ejemplo utilizaremos el arquetipo maven-archetype-quickstart provisto por Maven, para lo cual ingresaremos lo siguiente en nuestra terminal o línea de comandos:

mvn archetype:generate 
	-DgroupId=com.jcodepoint
	-DartifactId=myapp
	-DarchetypeArtifactId=maven-archetype-quickstart 
	-DinteractiveMode=false

Obtendremos el siguiente output donde se informa, entre otras cosas, el directorio de generación de los archivos y que el proceso ha finalizado de forma satisfactoria:

maven-crear-proyecto-output

El proyecto generado tendrá la siguiente estructura que cuenta con directorios para el código fuente de la aplicación y pruebas unitarias por separado, y un archivo pom.xml en el directorio raíz:

maven-crear-proyecto-estructura

El archivo pom.xml

El archivo pom.xml contiene toda la información relativa al proyecto en formato XML. Esta información incluye la estructura del proyecto, dependencias Maven, plugins, etc.

El archivo pom.xml generado debería verse así:

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.jcodepoint</groupId>
	<artifactId>myapp</artifactId>
	<packaging>jar</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>myapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
ElementoDescripción
modelVersionLa única versión soportada para POM es la 4.0.0.
groupIdEste valor suele ser el mismo dentro de un proyecto, o incluso dentro de una
organización, aunque no necesariamente tiene que coincidir con la estructura de paquetes del proyecto.
Pero este valor sí determina la estructura de directorios dentro del repositorio si el artefacto generado se instala en el mismo.
artifactIdPor lo general corresponde al nombre asignado al proyecto.
packagingDefine el tipo de empaquetado del artefacto (ear, jar, war, etc).
El valor por defecto es jar.
versionEspecifica el número de versión para un groupId:artifactId.
nameNombre descriptivo o conversacional del proyecto, más allá del artifactId.
urlHome page del proyecto.
dependenciesEspecifica la lista de dependencias para este proyecto. Al momento de la compilación Maven descarga y enlaza las librerías incluídas en esta lista.

El proyecto

A los efectos de ejemplificar, realizaremos un programa muy sencillo que consistirá en la reversión de un String utilizando la clase StringUtils de la librería Apache Commons Lang 3.

Modificar el archivo pom.xml

Se agregan las propiedades del compilador para especificar la versión:

<properties>
	<maven.compiler.source>1.8</maven.compiler.source>
	<maven.compiler.target>1.8</maven.compiler.target>
</properties>

También debemos agregar las dependencias del proyecto. En nuestro caso necesitamos agregar la librería Apache Commons Lang 3:

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.12.0</version>
</dependency>

El archivo pom.xml terminado debe quedar como se muestra a continuación:

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.jcodepoint</groupId>
	<artifactId>myapp</artifactId>
	<packaging>jar</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>myapp</name>
	<url>http://maven.apache.org</url>
	
	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>
	<dependencies>
  		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.12.0</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
  </dependencies>
</project>

Una vez modificado el POM podemos generar los archivos necesarios para importar el proyecto en Eclipse.

Para generar los archivos ejecutamos el siguiente comando:

mvn eclipse:eclipse

Luego en Eclipse hacemos click derecho sobre el workspace y seleccionamos Import…

En el diálogo que se abre seleccionamos General > Existing projects into workspace y luego click en Next:

maven-crear-proyecto-importar

En el siguiente diálogo seleccionar el directorio del proyecto y click en Finish:

maven-crear-proyecto-importar-2

Una vez importado el proyecto en Eclipse, modificaremos la clase App.java como sigue:

package com.jcodepoint;
import org.apache.commons.lang3.StringUtils;
public class App {
    public static void main(String[] args) {
    	String normal = "This is Java Programming";
    	String reversed = StringUtils.reverse(normal);
    	System.out.println("-> Normal: " + normal);
    	System.out.println("-> Reversed: " + reversed);
    }
}

Para ejecutar el programa desde Eclipse hacemos click derecho sobre la clase App.java (en el Navegador del proyecto) y seleccionamos Run as > Java Application:

proyecto-importar-3

La consola muestra lo siguiente:

proyecto-consola

Conclusión

El uso de Maven y JSF puede proporcionar una forma eficiente y optimizada de desarrollar aplicaciones web en Java. Al utilizar el arquetipo maven-archetype-quickstart, los desarrolladores pueden configurar rápidamente una estructura de proyecto que incluya los archivos y directorios necesarios para una aplicación Java básica. Además, al agregar las dependencias JSF necesarias al archivo pom.xml del proyecto, los desarrolladores pueden incorporar fácilmente la funcionalidad JSF en su aplicación. Con estas herramientas a su disposición, los desarrolladores pueden optimizar su flujo de trabajo y concentrarse en desarrollar aplicaciones sólidas y eficientes que satisfagan las necesidades de sus usuarios.


Te puede interesar

Agregar dependencias en Apache Maven

En este artículo veremos cómo agregar dependencias en Apache Maven en unos pocos pasos, buscando en el Repositorio Central de Maven.

Seguir leyendo →

Palabras reservadas en Java

Las palabras reservadas en Java son un componente crucial de la sintaxis del lenguaje para formar los bloques básicos del lenguaje.

Seguir leyendo →