Tal vez no tenía talento, y cuando conocí a Maven, me confundió varios tutoriales desconocidos. En mi uso posterior, descubrí que la mayoría de las funciones de Maven no eran tan difíciles como imaginaba.
Este artículo es para principiantes de Maven, con la esperanza de dejar que comprenda a Maven lo más rápido posible y disfrute de la serie de beneficios que trae.
[Una pregunta simple]
Antes de dar una explicación, haga una pregunta simple.
Si está desarrollando dos proyectos Java en Eclipse y llámelos A y B, algunas funciones en el Proyecto A dependen de ciertas clases en el Proyecto B, ¿cómo mantener esta dependencia?
Hice esto antes de usar el Proyecto B Maven y empaquetado como un frasco e importé el archivo JAR de B bajo la Biblioteca del Proyecto A.
Esto tiene desventajas obvias:
1. Si se encuentra un error en B durante el proceso de desarrollo, B debe reempaquetarse y recompensarse para el Proyecto A.
2. Al colaborar en el desarrollo del Proyecto A, para asegurarse de que pueda ejecutarse normalmente, elige el paquete B en A, o elija publicar B como B e informar al desarrollador sobre cómo usarlo. Obviamente, ambos métodos no son muy buenos. El primero puede causar un desperdicio de recursos (por ejemplo, el desarrollador puede estar desarrollando otros proyectos que dependen de B, que se han almacenado localmente), mientras que el segundo traerá riesgos al funcionamiento normal del proyecto (si el trabajo se entrega al trabajo manual, estará destinado a traer una cierta tasa de falla).
Por lo tanto, controlar manualmente las dependencias entre proyectos de esta manera es obviamente un enfoque "malo".
[Introducción a Maven]
Según la opinión del autor, la función central de Maven es describir razonablemente las dependencias entre proyectos.
Todos los proyectos Maven contienen un archivo llamado POM.XML, que registra su propio <grupo> <artifactId> <versión> y otros campos. Estos campos se completan al crear un proyecto Maven, y Maven localizará el proyecto en función de ellos.
Otra etiqueta clave en un POM es <pendencies>, que puede contener varias etiquetas <Spendency>, y en <Peepressy> son los campos de dependencia como <MoupRoD> <SartifactId> <versión> introducido anteriormente, que determinan una versión de proyecto única.
Un pom.xml típico [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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelVersion> 4.0.0 </modelversion> <grupoid> org.keplerproject </groupid> <arifactid> lujava </artifactID> <PROPELACIÓN> <name> Luajava </name> <sl> http://maven.apache.org </sl> <properties> <ject.build.sourceEncoding> utf-8 </project.build.sourceEncoding> </Properties> <1S construye> <glugins> <grupiD> orgache.maven.plugins </groupins </groupin> </Properties> <1t. <ArifactID> maven-compiler-plugin </artifactid> <versión> 2.0.2 </versión> <necuteation> <overnede> 1.7 </overgue> <arget> 1.7 </target> </figuration> </glugin> </glugins> </bield> <pendencies> <epardency> <grupid> junit </groupid> <artifactid> junit </artemid> <versión> 3.8.1 </versión> <cope> test </cope> </dependency> </proyecto>
[Biblioteca Maven]
Tomando los proyectos A y B solo ahora como ejemplo, escriba <Peepressy> en el archivo POM del Proyecto A, y Maven encontrará el proyecto B en el espacio de trabajo y creará dependencias. En este momento, el Proyecto A puede acceder directamente a los recursos de clase en el Proyecto B, y el punto de interrupción establecido en el Proyecto B aún se verá afectado durante la depuración de A.
Además de la asociación de dependencia del espacio de trabajo, Maven también puede asociar proyectos en una imagen remota. Por defecto, si no hay un registro de proyecto correspondiente en el espacio de trabajo, Maven se conectará al repositorio central para buscar. Si se encuentra, descargará el proyecto a la biblioteca local (la biblioteca local en Windows se encuentra en el directorio .m2 del documento del usuario) y establece automáticamente la asociación. Esta es una característica muy conveniente. Cuando necesitamos soporte adicional de paquetes JAR, ya no necesitamos descargarlo manualmente y presentarlo. Solo necesitamos pegar los campos de dependencia correspondientes al proyecto a la ubicación apropiada del POM, y dejar que el resto se complete.
[Un ejemplo]
Entonces, ¿cómo sabemos los campos como el grupo de grupos del proyecto requerido?
En términos generales, si el proyecto oficial apoya a Maven, generalmente habrá un campo de dependencia en su página para copiar, pero también hay una situación en la que se admite Maven, pero no se dan campos dependientes. Las características Maven de otros proyectos son mantenidas por terceros, y es difícil obtener apoyo para Maven de los canales oficiales.
Por lo tanto, la solución preferida para consultar los campos de dependencia es utilizar el servicio de búsqueda Maven para buscar.
Aquí recomiendo una dirección: MVNRepository.com
El siguiente es un ejemplo de uso de Eclipse para asociar el controlador MySQLJDBC. Antes de esto, confirme que es compatible con Maven en ayuda-> Acerca deClipse:
En la nueva versión oficial de Eclipse, el soporte para Maven ya está incorporado. Si la versión es más antigua, puede instalar el complemento Maven.
Primero creemos un nuevo proyecto Maven, New-> Project-> MavenProject-> CreateAsimpleProject (SkiparchetyPeselection).
El siguiente es el paso más importante. Complete los campos de dependencia como GroupId de este proyecto. Los campos completados aquí se utilizarán cuando otros proyectos dependan de ellos. Las piezas no llenas son opcionales:
Después de eso, buscamos "MySQL JDBC" en MVNRepository.com
Pronto, encontramos el resultado y hicimos clic para ver la información de la versión detallada:
Aquí está la lista de múltiples versiones y uso de MySQL JDBC. Aquí elegimos una segunda versión nueva 5.1.34:
Copie los contenidos en el cuadro Maven y escríbalos en el <pendencias> de la 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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelVersion> 4.0.0 </modelversion> <MoupRupid> com.test </groupid> <artifactid> maventest </artifactid> <lection> <AtifactId> mysql-confonector-java </artifactid> <versión> 5.1.34 </versión> </pendency> </pendencs> </proyecto>
Después de que termina la barra de lectura de progreso, puede ver que hay más dependencias de Maven en el proyecto, y puede encontrar el paquete de controladores JDBC que acabamos de presentar:
[Otras características]
1. Fuente de espejo
Es obvio que el almacén Central Maven tiene una carga relativamente grande y no está en China, por lo que la velocidad es muy lenta y, a veces, las dependencias no se pueden encontrar. Por lo tanto, especialmente en las ocasiones de desarrollo de equipo a pequeña escala, construir un servidor privado Maven mejorará en gran medida la eficiencia. Aquí hay una herramienta de construcción de imágenes Maven: Nexus: http://www.sonatype.org/nexus/
Úselo para construir rápida y fácilmente una fuente de imagen Maven privada, y luego configúrela en Maven Settings.xml.
2. Descarga perezosa del código fuente SRC
En algunos momentos, debemos consultar el archivo fuente que depende del proyecto. En este momento, podemos intentar hacer doble clic en el archivo de clase directamente. Si hay un archivo fuente en la fuente de imagen Maven, se descargará automáticamente al área local, y Eclipse se cargará y se mostrará automáticamente.
3. Compilar la configuración de los parámetros
El autor usa la versión Eclipseluna. La versión de compilación Java predeterminada de Maven es 1.5. Podemos especificar su versión de compilación en POM para mejorarla a 1.7 (consulte la etiqueta de compilación en Luajavapom); Además, estas configuraciones también se leerán y se configurarán correctamente mediante herramientas de automatización como la integración continua de Jenkins.
Resumir
Lo anterior se trata de comprender rápidamente a Maven. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!