1.1 Grandes programas

Ya hemos aprendido a escribir programas pequeños, así que ahora aprenderemos a escribir programas grandes. Como saben, cuanto más grande y complejo es el programa, más dinero se paga por su desarrollo :) Y comencemos con un poco de historia...

A medida que los programas aumentan de tamaño, los desarrolladores se enfrentan a dos nuevos desafíos:

  • Un gran número de personas están trabajando en el mismo programa.
  • No existe tal persona que conozca el código completo del programa.

Muy a menudo, comenzaron a surgir situaciones en las que un programador solucionó un error en un lugar del programa y al mismo tiempo rompió algo en otro. La documentación de lanzamiento incluso tiene esta broma:

Lista de cambios:

  • Solucionados errores antiguos :)
  • Se agregaron nuevos :(

Luego se les ocurrieron dos enfoques para resolver este problema: técnico y gerencial.

El enfoque técnico era que los programas se dividían en partes: bibliotecas y módulos . Cada uno de esos módulos era un pequeño ladrillo a partir del cual se construían grandes proyectos. Las bibliotecas son componentes tan universales que se pueden usar en diferentes programas.

El enfoque gerencial fue aún más interesante: limitaron la cantidad de personas que podían trabajar en un proyecto/biblioteca. Empíricamente, incluso se les ocurrió una regla: el equipo debería ser tan grande que "se pudiera alimentar con dos pizzas " . Esto generalmente significa que si hay más de 8 personas trabajando en un proyecto , entonces debe dividirse en dos proyectos.

Se ha vuelto popular en la comunidad de desarrolladores de Java escribir bibliotecas para todas las ocasiones y ponerlas a disposición del público. Por lo tanto, los programadores de Java no podían volver a escribir el mismo código (que a menudo era crudo y contenía errores), sino que usaban soluciones listas para usar y probadas .

Un incentivo adicional fue el hecho de que el lenguaje Java ganó gran popularidad al escribir soluciones del lado del servidor (funcionaba en el backend). En primer lugar, el software del servidor tiene mayores requisitos de confiabilidad, y siempre es preferible usar bibliotecas probadas en lugar de escribir su propio código.

En segundo lugar, los servidores prácticamente no tienen límites en cuanto al tamaño del código. El desarrollador de una aplicación móvil intenta meterla en 10 megabytes, una aplicación de escritorio en 100 megabytes. Y un desarrollador back-end de Java puede meter varias decenas de gigabytes de bibliotecas en un proyecto y nadie le dirá una palabra :)

Por cierto, esto no es una broma. Puede encontrar fácilmente un proyecto de back-end con varias docenas de módulos y un par de cientos de bibliotecas. Pero se ha vuelto extremadamente difícil describir (¡y cambiar!) los scripts de compilación para este tipo de proyectos.

Y entonces apareció Maven.

1.2 Introducción a Maven

Maven es un "marco" especial para la gestión de compilación de proyectos. Estandariza 3 cosas:
  • Descripción del proyecto;
  • Guiones de construcción de proyectos;
  • Dependencias entre bibliotecas.

El predecesor de Maven fue Ant , y su sucesor es Gradle . Pero fue Maven quien desarrolló y perfeccionó los tres estándares enumerados y también reguló su interacción. Fue él quien llevó el trabajo de las comunidades de Java a un nuevo nivel. Veámoslo con más detalle.

Experto

Técnicamente, Maven es un programa / servicio especial, cuyo objetivo principal es administrar el proceso de construcción de proyectos. Puede descargarse simplemente como un archivo y descomprimirse en cualquier directorio. No necesita un instalador especial para esto.

No tiene una interfaz gráfica; todos los comandos se le dan a través de la consola . Para que sea aún más cómodo trabajar con él, se recomienda registrar variables de entorno especiales en su sistema operativo.

Maven también tiene un repositorio especial (directorio/carpeta) donde almacena las bibliotecas que usa al construir proyectos. Deberá seleccionar alguna carpeta en el disco y asignarla como repositorio.

Otra cosa interesante es la presencia de un repositorio Maven global para todas las bibliotecas, pero hablaremos de esto un poco más adelante.

1.3 Descargar e instalar Maven

Maven tiene un sitio oficial maven.apache.org . Hay mucha documentación sobre el proyecto, por lo que si tiene alguna dificultad o pregunta adicional, entre, no sea tímido.

También en la página de descargas ( https://maven.apache.org/download.cgi ) puede descargar el archivo maven (apache-maven-3.8.5-bin.zip). El archivo desempaquetado ocupará alrededor de 10 MB, aunque el repositorio maven local eventualmente requerirá varios cientos de megabytes de memoria.

Maven está escrito en Java y requiere un JRE de al menos la versión 7, así como variables de entorno JAVA_HOME definidas.

Simplemente cree una carpeta para Maven en su computadora, por ejemplo, d:\devtools , y extraiga el archivo con Maven en ella. Como resultado, debería obtener una carpeta como d:\devtools\maven\bin , donde se ubicarán los archivos binarios principales del proyecto.

1.4 Variables de entorno

Después de eso, debe agregar la ruta a la carpeta bin desde el archivo desempaquetado a la variable de entorno PATH.

Para configurar la variable de entorno en Windows 10, debe ir a Panel de control - Sistema - Configuración avanzada del sistema. Luego haga clic en "Variables de entorno", busque PATH y seleccione "Editar", luego agregue la ruta d:\devtools\maven\bin al final de la línea. Preste atención, la ruta debe conducir exactamente a la carpeta bin.

En un sistema operativo basado en Unix, la variable de entorno se puede agregar con un comando de consola:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

Si hizo todo correctamente, entonces en la consola debe escribir el comando: "mvn -v". En respuesta, verás algo como:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 Repositorio Maven local

También puede configurar una carpeta especial donde Maven almacenará las bibliotecas jar que usará al crear proyectos. Esta carpeta se llama repositorio maven local .

Si no se especifica dicha carpeta, Maven la creará en el directorio de inicio del usuario actual. Mi directorio es: C:\Users\Zapp\.m2

La carpeta tiene un nombre bastante específico “.m2”. Aunque no asusta a los usuarios de Linux, existe un enfoque bastante común para nombrar varios "repositorios" y/o cualquier otro almacenamiento de información de servicio.

¡Importante! No coloque Maven en las carpetas del sistema, ya que necesitará permisos de escritura en estas carpetas durante la operación, lo que puede ser de interés poco saludable para el antivirus o el sistema operativo.

Maven antes de la versión 3.5 requería una variable de entorno llamada M2_HOME, pero ya no es necesaria.

Puede leer más sobre la configuración de Maven en el enlace: https://maven.apache.org/configure.html