Esta guía le guiará en el uso de Maven para crear un proyecto Java sencillo.
Creará una aplicación que proporcione la hora del día y luego la compilará con Maven.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
Primero necesitarás configurar un proyecto Java para que Maven lo construya. Para mantener el foco en Maven, haga que el proyecto sea lo más simple posible por ahora. Cree esta estructura en una carpeta de proyecto de su elección.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
Dentro del directorio src/main/java/hello
, puede crear cualquier clase de Java que desee. Para mantener la coherencia con el resto de esta guía, cree estas dos clases: HelloWorld.java
y Greeter.java
.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
Ahora que tiene un proyecto listo para construir con Maven, el siguiente paso es instalar Maven.
Maven se puede descargar como un archivo zip en https://maven.apache.org/download.cgi. Solo se requieren los archivos binarios, así que busque el enlace a apache-maven- {version} -bin.zip o apache-maven- {version} -bin.tar.gz.
Una vez que haya descargado el archivo zip, descomprímalo en su computadora. Luego agregue la carpeta bin a su ruta.
Para probar la instalación de Maven, ejecute mvn
desde la línea de comandos:
mvn-v
Si todo va bien, se le presentará información sobre la instalación de Maven. Será similar (aunque quizás ligeramente diferente) al siguiente:
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Inicio de Maven: /home/dsyer/Programs/apache-maven Versión de Java: 1.8.0_152, proveedor: Azul Systems, Inc. Inicio de Java: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre Configuración regional predeterminada: en_GB, codificación de plataforma: UTF-8 Nombre del sistema operativo: "linux", versión: "4.15.0-36-generic", arco: "amd64", familia: "unix"
¡Felicidades! Ahora tienes Maven instalado.
INFORMACIÓN: Es posible que desee considerar el uso del contenedor Maven para evitar que sus desarrolladores tengan la versión correcta de Maven o tengan que instalarla. Los proyectos descargados de Spring Initializr tienen el contenedor incluido. Aparece como un script mvnw
en el nivel superior de su proyecto que ejecuta en lugar de mvn
.
Ahora que Maven está instalado, necesita crear una definición de proyecto Maven. Los proyectos de Maven se definen con un archivo XML llamado pom.xml . Entre otras cosas, este archivo proporciona el nombre del proyecto, la versión y las dependencias que tiene en bibliotecas externas.
Cree un archivo llamado pom.xml en la raíz del proyecto (es decir, colóquelo al lado de la carpeta src
) y proporciónele el siguiente contenido:
pom.xml
link:initial/pom.xml[role=include]
Con la excepción del elemento
opcional, este es el archivo pom.xml más simple posible y necesario para construir un proyecto Java. Incluye los siguientes detalles de la configuración del proyecto:
. Versión del modelo POM (siempre 4.0.0).
. Grupo u organización a la que pertenece el proyecto. A menudo se expresa como un nombre de dominio invertido.
. Nombre que se le dará al artefacto de la biblioteca del proyecto (por ejemplo, el nombre de su archivo JAR o WAR).
. Versión del proyecto que se está construyendo.
: cómo se debe empaquetar el proyecto. El valor predeterminado es "jar" para el empaquetado de archivos JAR. Utilice "war" para empaquetar archivos WAR.
Nota | Cuando se trata de elegir un esquema de control de versiones, Spring recomienda el enfoque de control de versiones semántico. |
En este punto, tiene definido un proyecto Maven mínimo pero capaz.
Maven ahora está listo para construir el proyecto. Ahora puede ejecutar varios objetivos del ciclo de vida de la compilación con Maven, incluidos los objetivos para compilar el código del proyecto, crear un paquete de biblioteca (como un archivo JAR) e instalar la biblioteca en el repositorio de dependencia local de Maven.
Para probar la compilación, ejecute lo siguiente en la línea de comando:
compilar mvn
Esto ejecutará Maven y le indicará que ejecute el objetivo de compilación . Cuando haya terminado, debería encontrar los archivos .class compilados en el directorio target/classes .
Dado que es poco probable que quieras distribuir o trabajar con archivos .class directamente, probablemente querrás ejecutar el objetivo del paquete en su lugar:
paquete mvn
El objetivo del paquete compilará su código Java, ejecutará cualquier prueba y finalizará empaquetando el código en un archivo JAR dentro del directorio de destino . El nombre del archivo JAR se basará en
y
del proyecto. Por ejemplo, dado el archivo pom.xml mínimo de antes, el archivo JAR se llamará gs-maven-0.1.0.jar .
Para ejecutar el archivo JAR ejecute:
java -jar objetivo/gs-maven-0.1.0.jar
Nota | Si ha cambiado el valor de de "jar" a "war", el resultado será un archivo WAR dentro del directorio de destino en lugar de un archivo JAR. |
Maven también mantiene un repositorio de dependencias en su máquina local (generalmente en un directorio .m2/repository en su directorio de inicio) para un acceso rápido a las dependencias del proyecto. Si desea instalar el archivo JAR de su proyecto en ese repositorio local, debe invocar el objetivo install
:
instalación mvn
El objetivo de instalación compilará, probará y empaquetará el código de su proyecto y luego lo copiará en el repositorio de dependencia local, listo para que otro proyecto haga referencia a él como una dependencia.
Hablando de dependencias, ahora es el momento de declarar dependencias en la compilación de Maven.
El sencillo ejemplo Hello World es completamente autónomo y no depende de bibliotecas adicionales. Sin embargo, la mayoría de las aplicaciones dependen de bibliotecas externas para manejar funciones comunes y complejas.
Por ejemplo, supongamos que además de decir "¡Hola mundo!", desea que la aplicación imprima la fecha y hora actuales. Si bien puedes usar las funciones de fecha y hora en las bibliotecas nativas de Java, puedes hacer las cosas más interesantes usando las bibliotecas de Joda Time.
Primero, cambie HelloWorld.java para que se vea así:
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
Aquí HelloWorld
usa la clase LocalTime
de Joda Time para obtener e imprimir la hora actual.
Si ejecutara mvn compile
para compilar el proyecto ahora, la compilación fallaría porque no declaró Joda Time como una dependencia de compilación en la compilación. Puedes solucionarlo agregando las siguientes líneas a pom.xml (dentro del elemento
):
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
Este bloque de XML declara una lista de dependencias para el proyecto. Específicamente, declara una dependencia única para la biblioteca Joda Time. Dentro del elemento
, las coordenadas de dependencia están definidas por tres subelementos:
: el grupo u organización a la que pertenece la dependencia.
: la biblioteca necesaria.
: la versión específica de la biblioteca que se requiere.
De forma predeterminada, todas las dependencias tienen el alcance de dependencias compile
. Es decir, deberían estar disponibles en tiempo de compilación (y si estuviera creando un archivo WAR, incluso en la carpeta /WEB-INF/libs de WAR). Además, puede especificar un elemento
para especificar uno de los siguientes ámbitos:
provided
: dependencias que se requieren para compilar el código del proyecto, pero que serán proporcionadas en tiempo de ejecución por un contenedor que ejecuta el código (por ejemplo, la API de Servlet de Java).
test
: dependencias que se utilizan para compilar y ejecutar pruebas, pero que no son necesarias para crear o ejecutar el código de tiempo de ejecución del proyecto.
Ahora, si ejecuta mvn compile
o mvn package
, Maven debería resolver la dependencia de Joda Time desde el repositorio central de Maven y la compilación se realizará correctamente.
Primero agregue JUnit como una dependencia a su pom.xml, en el alcance de la prueba:
link:complete/pom.xml[role=include]
Luego cree un caso de prueba como este:
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven utiliza un complemento llamado "surefire" para ejecutar pruebas unitarias. La configuración predeterminada de este complemento compila y ejecuta todas las clases en src/test/java
con un nombre que coincida con *Test
. Puede ejecutar las pruebas en la línea de comando de esta manera
prueba mvn
o simplemente use el paso mvn install
como ya mostramos anteriormente (hay una definición de ciclo de vida donde "prueba" se incluye como etapa en "instalación").
Aquí está el archivo pom.xml
completo:
pom.xml
link:complete/pom.xml[role=include]
Nota | El archivo pom.xml completo utiliza el complemento Maven Shade por la simple conveniencia de hacer que el archivo JAR sea ejecutable. El objetivo de esta guía es comenzar con Maven, no utilizar este complemento en particular. |
¡Felicidades! Ha creado una definición de proyecto Maven simple pero eficaz para crear proyectos Java.
Las siguientes guías también pueden resultar útiles:
Construyendo proyectos Java con Gradle
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc