English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Tal vez no soy muy talentoso, al principio, cuando conocí Maven, estaba muy confundido por varios tutoriales sin sentido, pero después de usarlo, descubrí que la mayoría de las funciones de Maven no son tan difíciles como se imaginaba.
Este artículo está dirigido a principiantes en Maven, con la esperanza de que puedan comprenderlo y disfrutar de los beneficios que ofrece de manera rápida.
[Una pregunta sencilla]
Antes de explicar, hago una pregunta sencilla.
Supongamos que estás desarrollando dos proyectos Java en Eclipse, llamémoslos A y B, donde algunas funciones del proyecto A dependen de ciertas clases del proyecto B, ¿cómo mantener esta relación de dependencia?
Antes de usar Maven, hice así: empaqueté el proyecto B como jar y lo importé en la Library del proyecto A.
Esto tiene una desventaja muy evidente:
1.Si se encuentra un bug en B durante el proceso de desarrollo, es necesario empacar B de nuevo y realizar la operación de recompilación del proyecto A.
2.Al colaborar en el desarrollo del proyecto A, para garantizar que pueda funcionar correctamente, o bien elegir empacar B dentro de A, o bien elegir lanzar B de la misma manera y informar a los desarrolladores sobre el método de uso. Obviamente, ninguno de estos métodos es muy bueno, ya que el primero puede causar un desperdicio de recursos (por ejemplo, los desarrolladores pueden estar desarrollando otros proyectos que dependen de B, y B ya se ha almacenado localmente), mientras que el segundo puede traer riesgos para el funcionamiento normal del proyecto.
Por lo tanto, este control manual de las relaciones de dependencia entre proyectos es claramente un método 'inepto'.
[Introducción a Maven]
En mi opinión, la función central de Maven es narrar de manera razonable las relaciones de dependencia entre proyectos.
Todos los proyectos Maven contienen un archivo llamado pom.xml, en el que se registran sus campos <groupId><artifactId><version> y otros, que se rellenan al crear el proyecto Maven y Maven los utiliza para ubicar este proyecto.
Otra etiqueta clave en el pom es <dependencies>, debajo de la cual se pueden incluir varios <dependency> etiquetas, y debajo de <dependency> se encuentran los campos de dependencia presentados anteriormente como <groupId><artifactId><version> y otros, que determinan una versión de proyecto única.
Un pom.xml típico [proveniente del proyecto luajava]:
<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>org.keplerproject</groupId> <artifactId>luajava</artifactId> <version>1.1</version> <packaging>jar</packaging> <name>luajava</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
[Biblioteca de Maven]
Tomando como ejemplo los proyectos A y B, escriba <dependency> para asociar el proyecto B en el archivo pom del proyecto A, Maven encontrará el proyecto B en el área de trabajo y creará la dependencia. En este momento, el proyecto A puede acceder directamente a los recursos de clase del proyecto B, y también se alcanzará el punto de ruptura configurado en el proyecto B durante la depuración del proyecto A.
Además de la asociación de dependencias del área de trabajo, Maven también puede asociarse con un proyecto en un repositorio remoto, en el caso predeterminado, si no hay un registro del proyecto correspondiente en el área de trabajo, Maven se conectará al repositorio central para buscar, si encuentra, lo descargará en la biblioteca local (en Windows, la biblioteca local se encuentra en el documento de usuario del .m)2Bajo el directorio), y se configurará automáticamente la asociación. Esta es una característica muy conveniente, cuando necesitamos soporte adicional de jar, ya no es necesario realizar la descarga y la introducción manualmente, solo necesitamos pegar el campo de dependencias correspondiente del proyecto necesario en la posición adecuada de pom, y el resto lo realiza Maven.
[Un ejemplo]
Entonces, ¿cómo podemos saber los campos necesarios como groupId del proyecto requerido?
En general, si el proyecto oficial admite Maven, en su página generalmente hay un campo de dependencias para copiar, pero también existe el caso de que admita Maven pero no proporcione un campo de dependencias. Y para otros proyectos, las características de Maven son mantenidas por terceros, en este caso, obtener soporte para Maven a través de canales oficiales es bastante difícil.
Por lo tanto, la primera opción para buscar campos de dependencia es usar el servicio de búsqueda de Maven.
Aquí, el autor recomienda una dirección: mvnrepository.com
A continuación, se muestra un ejemplo de cómo usar Eclipse para asociar el controlador JDBC de MySQL, antes de eso, en Help->Confirmar soporte de Maven en AboutEclipse:
En la versión oficial más reciente de Eclipse, ya tiene soporte integrado para Maven, si la versión es bastante antigua, puede instalar el plugin de Maven.
Vamos a crear un proyecto Maven nuevo, New->Project->MavenProject->Crear un proyecto simple (saltar la selección de archetypes).
Este paso es bastante importante, complete los campos de dependencia del proyecto como groupId, aquí los campos que complete se usarán cuando otros proyectos dependan de él, los campos no completados son opcionales:
Luego, buscamos "MySQL JDBC" en mvnrepository.com:
Muy pronto, encontramos el resultado, haga clic para ver la información detallada de la versión:
Aquí se enumeran varias versiones y usos de MySQL JDBC, aquí elegimos la segunda versión más reciente:5.1.34:
Copia el contenido del cuadro de Maven y escríbelo debajo de <dependencies> en pom:
<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.test</groupId> <artifactId>maventest</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency> </dependencies> </project>
Después de que la barra de progreso de Progress termine, podemos ver que en el proyecto hay más Maven Dependencies, donde podemos encontrar el paquete de controlador jdbc que acabamos de introducir:
[Otras características]
1.Repositorio de镜像
Es evidente que la carga del repositorio central de Maven es grande y no está en el país, por lo que la velocidad es muy lenta y a veces incluso no se puede encontrar la dependencia. Por lo tanto, especialmente en escenarios de desarrollo en equipo a pequeña escala, la construcción de un Maven privado puede mejorar enormemente la eficiencia. Aquí se recomienda una herramienta de construcción de镜像 Maven: Nexus: http://www.sonatype.org/nexus/
Con él, se puede configurar rápidamente y fácilmente un repositorio de imágenes Maven privado, luego configure en settings.xml de Maven.
2.Descarga perezosa del código fuente src
En algunos casos, necesitamos consultar los archivos de origen de los proyectos dependientes, en este caso, podemos intentar hacer doble clic en el archivo class, si el repositorio de imágenes de Maven contiene archivos de origen, se descargarán automáticamente al local, eclipse los cargará y mostrará automáticamente.
3.Configuración de parámetros de compilación
El autor utiliza la versión Eclipse Luna, la versión predeterminada de compilación de Java de Maven es1.5,podemos especificar la versión de compilación en pom para que suba a1.7(Consulte la etiqueta build en luajavapom); Además, estas configuraciones también serán leídas y configuradas adecuadamente por herramientas de automatización como Jenkins CI.
Resumen
Esto es todo sobre cómo entender rápidamente Maven, espero que sea útil para todos. Los amigos interesados pueden continuar consultando otros temas relacionados en este sitio. Si hay deficiencias, por favor déjenos un mensaje. Gracias por el apoyo de los amigos a este sitio!
Declaración: El contenido de este artículo se ha obtenido de la red, y los derechos de autor pertenecen a los propietarios originales. El contenido ha sido contribuido y subido por usuarios de Internet de manera autónoma. Este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume responsabilidad alguna por las responsabilidades legales. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.