¿Qué es un almacén maven?
Cuando no usamos Maven, por ejemplo, en el pasado, solíamos construir proyectos con ANT, a menudo vemos un subdirectorio llamado /lib, que almacena varios archivos JAR de dependencia de terceros, como log4j.jar, junit.jar, etc.
Cada vez que crea un proyecto, debe crear dicho directorio A /lib y luego copiar un par de archivos JAR, que es una duplicación obvia. La repetición es siempre el punto de partida de una pesadilla. Múltiples proyectos no comparten el mismo archivo JAR, lo que no solo causará un desperdicio de recursos de disco, sino que también dificultará la gestión de consistencia de las versiones.
Además, si utiliza herramientas de administración de versiones como SVN (¿no usa herramientas de administración de versiones? Intente SVN ahora, puede ayudarlo a resolver muchos dolores de cabeza), debe enviar una gran cantidad de archivos JAR a la biblioteca de códigos, pero las herramientas de administración de versiones no son excelentes en el manejo de archivos binarios.
El repositorio Maven es donde se colocan todos los archivos JAR (guerra, zip, pom, etc.). Todos los proyectos Maven pueden obtener el frasco de dependencia que necesitan del mismo repositorio de Maven, que ahorra recursos de disco. Además, dado que todos los frascos en el repositorio de Maven tienen sus propias coordenadas, que le dicen a Maven su ID de grupo, ID de componente, versión, método de embalaje, etc., el proyecto Maven puede realizar fácilmente la gestión de versiones de dependencia. No está obligado a enviar archivos JAR al repositorio SCM, puede crear un repositorio Maven a nivel de organización para que todos los miembros lo usen.
En resumen, el repositorio de Maven nos ayuda a administrar artefactos (principalmente frascos).
En Maven, la salida de cualquier dependencia, complemento o construcción del proyecto se puede llamar componente.
Maven almacena todos los componentes compartidos de todos los proyectos en una ubicación unificada. Esta ubicación unificada se llama almacén. (El almacén es donde se almacenan dependencias y complementos)
Cualquier componente tiene una coordenada única. Maven define la ruta de almacenamiento única del componente en el almacén basado en esta coordenada.
Interpretar la ruta de almacenamiento de Maven en el repositorio:
1. Prepare la ruta basada en GroupId, convierta el separador de período en el separador de ruta, es decir, convertir "". a "/" ; Ejemplo: org.testng ---> org/testng
2. Prepare la ruta basada en ArtifactId y conecte ArtifactId a la parte posterior: org/testng/testng
3. Use la versión para preparar la ruta y conecte la versión a la parte posterior: org/testng/testng/5.8
4. Conecte ArtifactId a la versión con un guión separador en la parte posterior: org/testng/testng/5.8/tesng-5.8
5. Juzgando si el componente tiene un clasificador, agregue el guión separador después del elemento 4 y agregue el clasificador, org/testng/testng/5.8/tesng-5.8-jdk5
6. Verifique la extensión del componente. Si la extensión existe, agregue el separador y la extensión del período. La extensión se determina mediante embalaje, org/testng/testng/5.8/tesng-5.8-jdk5.Jar
En este punto, entendemos los detalles del almacenamiento de componentes de Maven.
Clasificación de almacén Maven:
Maven's Warehouse tiene solo dos categorías: 1. Almacén local 2. Almacén remoto, que se divide en tres tipos en almacenes remotos: 2.1 Central Warehouse 2.2 Servidor privado 2.3 Otros almacenes públicos
1. El almacén local, como su nombre lo indica, es donde Maven almacena componentes localmente.
Nota: El repositorio local de Maven no se creará después de instalar Maven. Se crea solo cuando el comando Maven se ejecuta por primera vez.
La ubicación predeterminada del repositorio local de Maven: ya sea Windows o Linux, hay un directorio .m2/ repository/ repositorio en el directorio del usuario. Esta es la ubicación predeterminada del repositorio Maven.
Cómo cambiar la ubicación del repositorio local predeterminado de Maven: aquí queremos introducir un nuevo elemento: LocalRepository, que existe en el archivo settings.xml de Maven
1.1 Cambie el repositorio local que configura a todo el usuario: primero cree el archivo settings.xml en /.m2/ directorio y luego establezca el valor del elemento LocalRepository en la dirección del repositorio deseada en ~/.m2/settings.xml.
<nettings> <LocalRepository> d:/maven_new_repository </localRepository> </etfastings>
En este momento, la dirección del repositorio local de Maven se convierte en d:/maven_new_repository. Nota: El repositorio local de Maven configurado en este momento pertenece al alcance del usuario.
1.2 Cambie el repositorio local de configuración a nivel mundial: cambie la configuración en m2_home/conf/settings.xml, el método de cambiar la configuración es el mismo que el anterior
Nota: Después de este cambio, todos los usuarios se verán afectados, y si Maven se actualiza, todas las configuraciones se borrarán, por lo que debe copiar y hacer una copia de seguridad del archivo m2_home/conf/settings.xml por adelantado.
Por lo tanto: en circunstancias normales, no se recomienda la configuración de Global Settings.xml.
2. Repositorio remoto
2.1 Cuando se trata de almacenes remotos, comience con el almacén central más central. El almacén central es el almacén remoto predeterminado. Cuando se instala Maven, viene con la configuración del almacén central.
En la agregación y la herencia de Maven, hemos dicho que todos los proyectos Maven heredarán Super Pom. Específicamente, si el POM que contiene las siguientes configuraciones, lo llamamos Super Pom
<Sepositories> <Repository> <d> Central </id> <nec> repositorio central </name> <url> http://repo.maven.apache.org/maven2 </sl> <layout> default </leut> <stapshots> <Eneded> False </Endably> </napshots> </pository> </repository>
El almacén central contiene los componentes Java de código abierto más populares, así como código fuente, información del autor, SCM, información, información de licencia, etc. En términos generales, las dependencias simples del proyecto Java se pueden descargar aquí
2.2 servidor privado
El servidor privado es un almacén remoto especial. Es un servicio de almacén establecido en la LAN. Los servidores privados representan almacenes remotos en la WAN para usuarios de Maven en la LAN. Cuando Maven necesita descargar componentes, solicita desde el servidor privado. Si el componente no existe en el servidor privado, se descargará desde un repositorio remoto externo, caché en caché en el servidor privado y luego proporcionará servicios para la solicitud de descarga de Maven. También podemos cargar algunos componentes que no se pueden descargar desde almacenes externos hasta servidores privados.
Características del servidor privado Maven:
1. Guarde su propio ancho de banda de red externo: reduzca el consumo de ancho de banda de red externo causado por solicitudes repetidas
2. Acelere el componente Maven: si el proyecto está configurado con muchos almacenes remotos externos, la velocidad de construcción se reducirá considerablemente.
3. Implemente componentes de terceros: cuando algunos componentes no se pueden obtener de almacenes externos, podemos implementar estos componentes en almacenes internos (servidores privados) para su uso por proyectos internos de Maven.
4. Mejorar la estabilidad y mejorar el control: cuando Internet es inestable, la construcción Maven también se volverá inestable. Algunos software de servidor privado también proporcionan otras funciones.
5. Reduzca la carga del almacén central: el número de solicitudes de almacenes centrales Maven es enorme, y la configuración de servidores privados también puede reducir en gran medida la presión del almacén central.
El servidor privado Maven actual actual:
1. Archiva de Apache
2. Artifactorio de Jfrog
3. Nexus de Sonatype
3. Configuración remota del almacén
Configuración del repositorio remoto introducirá nuevos elementos de configuración: <Repositorios> <Repositorio>
Bajo el elemento <Repositorios>, puede usar el elemento infantil <Repository> para declarar uno o más repositorios remotos.
ejemplo:
<S Repository> <id> JBoss </id> <name> Repository JBoss </name> <url> http://repository.jboss.com/maven2/ </sl> <lotess> <updatePolicy> diary </updatePolicy> <!-nunca, nunca, siempre, interval n-> <neded> verdadero </shabled> <ChechSumpolicy> Warn </checkSumpolicy> <!-Fail, Ignore-> </arlotes> <Snapshots> <Dabled> False </Enabled> </snstapshots> <LECEOUT> predeterminado </loout> </spository> </spository> </repository>
<updatePolicy> elemento: representa la frecuencia de actualización, los valores son: nunca, siempre, intervalo, diariamente, diariamente son los valores predeterminados
<emento checkSumpolicy>: representa la política de Maven para verificar y verificar archivos. Warn es el valor predeterminado por razones de seguridad. A veces necesitamos autenticar el acceso del almacén remoto. En general, la información de autenticación está configurada en settings.xml:
<Servers> <verver> <di> Lo mismo con la ID de repositorio en POM </id> <sansername> Nombre de usuario </ssoceuse> <bassword> pwd </contraseña> </servidor> </servers>
Nota: La ID aquí debe ser consistente con la ID del elemento del repositorio que debe autenticarse en el POM.
Cómo implementar proyectos generados a repositorios remotos
Para completar este trabajo, también debe configurarlo en el POM. Aquí hay un nuevo elemento: <DistributionManagement>
DistributionManagement contiene 2 elementos infantiles: repositorio y instantánea. El primero representa el repositorio para publicar el componente de la versión, y el segundo representa el repositorio para la versión de instantánea.
Ambos elementos deben configurar ID (el identificador único del repositorio remoto), nombre, URL (que representa la dirección del repositorio)
La implementación de componentes en almacenes remotos requiere autenticación. La configuración es la misma que la anterior
Ejecutar después de que la configuración sea correcta: MVN Clean Deploy
Mira las instantáneas correctamente
Antes, al configurar POM, fuimos muy cautelosos sobre la configuración de instantáneas, o rara vez usamos la versión de instantánea. La razón es que todavía es muy inestable y es muy fácil causar errores desconocidos a nuestro sistema, lo que dificulta la búsqueda de nosotros. De hecho, la versión de instantánea no es inútil. El mayor propósito de la instantánea se debe utilizar en el proceso de desarrollo, especialmente cuando hay dependencias de módulos. Por ejemplo, A y B se desarrollan simultáneamente. A depender de B. Durante el proceso de desarrollo, A y B son un desarrollo constantemente integrado, modificando constantemente archivos POM y proyectos de construcción. En este momento, la sincronización de la versión se convierte en un gran problema. Esto se puede lograr usando instantáneas.
De hecho, durante el lanzamiento de la versión de instantánea, Maven marcará automáticamente el componente con la marca de tiempo actual. Con esta marca de tiempo, podemos encontrar la última versión de instantánea en cualquier momento, lo que resolverá el problema del desarrollo colaborativo que acabamos de mencionar.
En cuanto a cómo una verificación de la actualización de B, acabo de decir al hablar sobre la configuración de que hay un elemento en la configuración de la instantánea que puede controlar la frecuencia de verificación de actualizaciones ------- UpdatePolicy
También podemos usar la línea de comando para agregar parámetros para obligar a Maven a verificar las actualizaciones: mvn clean install-U
¿Cómo se maven los componentes de análisis del almacén? ---- El mecanismo de Maven para analizar las dependencias del repositorio
1. Cuando el alcance de la dependencia es el sistema, Maven resuelve directamente el componente desde el sistema de archivos local.
2. Después de calcular la ruta del almacén basada en las coordenadas de dependencia, intente encontrar componentes directamente desde el almacén local. Si se encuentra el componente correspondiente, la resolución será exitosa.
3. En el caso de que no haya un componente correspondiente en el repositorio local, si la versión dependiente es el componente de versión de versión mostrado, itera a través de todos los repositorios remotos y lo descarga después de descubrir.
4. Si la versión dependiente es la versión o más reciente, los metadatos de todos los repositorios remotos se leen en función de la política de actualización, fusionan los metadatos correspondientes del repositorio local, calcule el verdadero valor de la versión o la última, y luego verifique el repositorio local basado en este valor real.
5. Si la versión dependiente es instantánea, los metadatos de todos los repositorios remotos se leen en función de la política de actualización, fusione con los metadatos correspondientes del repositorio local y obtenga el valor de la última versión de instantáneas, y luego verifique el repositorio local basado en el valor o descargarlo desde el repositorio remoto.
6. Si la última versión de artefacto analizado es una instantánea del formato de marca de tiempo, copie el archivo en su formato de marca de tiempo a un formato no Timetamp y use el artefacto en este formato que no sea de Timetamp.
NOTA: Asegúrese de recordar <loteo> <abled> & <sapshot> <nedabled>, lo mismo es cierto para las instantáneas
El último y lanzamiento no se recomienda al declarar POM. Último y lanzamiento en la configuración del complemento ya no se admite en Maven3. Si la versión de complemento no está configurada, la versión final es la misma que la versión.
Maven solo analizará el último lanzamiento.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.