English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Repositorio de Maven

En el termino de Maven, el repositorio es una ubicación (lugar).

El repositorio de Maven es la biblioteca de terceros que depende del proyecto, el lugar donde se encuentra esta biblioteca se llama repositorio.

En Maven, cualquier dependencia, plugin o salida de construcción de proyecto se puede llamar componente.

El repositorio de Maven nos ayuda a gestionar componentes (principalmente JAR), es el lugar donde se colocan todos los archivos JAR (WAR, ZIP, POM, etc.).

El repositorio de Maven tiene tres tipos:

  • Local (local)

  • Central (central)

  • Remoto (remote)

Repositorio local

El repositorio local de Maven no se crea después de instalar Maven, se crea cuando se ejecuta el comando maven por primera vez.

Al ejecutar Maven, cualquier componente necesario por Maven se obtiene directamente del repositorio local. Si el repositorio local no tiene, primero intentará descargar el componente desde el repositorio remoto al repositorio local, y luego usar el componente del repositorio local.

Por defecto, ya sea Linux o Windows, cada usuario tiene un camino en su directorio de usuario llamado .m2/respository/ directorio del repositorio.

El repositorio local de Maven se crea por defecto en el directorio %USER_HOME%. Para modificar la ubicación predeterminada, en el %M2HOME%\conf el archivo settings.xml de Maven se define otro camino.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>C:/MyLocalRepository</localRepository>
</settings>

Cuando ejecuta comandos de Maven, Maven descarga los archivos de dependencia al directorio especificado.

Repositorio central

El repositorio central de Maven es proporcionado por la comunidad de Maven y contiene una gran cantidad de bibliotecas comunes.

El repositorio central contiene la mayoría de los componentes de Java de código abierto populares, así como el código fuente, información del autor, SCM, información, información de licencias, etc. Por lo general, los componentes dependientes de los proyectos Java simples se pueden descargar aquí.

Conceptos clave del repositorio central:

  • Este repositorio es administrado por la comunidad de Maven.

  • No requiere configuración.

  • Se necesita acceso a través de la red.

Para explorar el contenido del repositorio central, la comunidad de Maven proporciona una URL:http://search.maven.org/#browse。Al usar este repositorio, los desarrolladores pueden buscar todas las bibliotecas disponibles.

Repositorio remoto

Si Maven no encuentra los archivos dependientes en el repositorio central, detendrá el proceso de construcción y mostrará un mensaje de error en la consola. Para evitar esto, Maven ofrece el concepto de repositorio remoto, que es un repositorio personalizado por el desarrollador que contiene las bibliotecas de código necesarias u otros archivos jar utilizados en proyectos.

Por ejemplo, al usar el siguiente pom.xml, Maven descargará los archivos dependientes declarados en este pom.xml desde el repositorio remoto.

<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.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>com.companyname.common-lib</groupId>
         <artifactId>common-lib</artifactId>
         <version>1.0.0</version>
      </dependency>
   <dependencies>
   <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
</project>

Orden de búsqueda de dependencias de Maven

Cuando ejecutamos el comando de construcción de Maven, Maven comienza a buscar bibliotecas dependientes en el siguiente orden:

  • Pasos 1 - Buscar localmente en el repositorio, si no se encuentra, ejecutar el paso 2Si encuentra, ejecute otras operaciones.

  • Pasos 2 - Busca en el repositorio central. Si no lo encuentra y hay uno o más repositorios remotos configurados, ejecuta el paso 4, si lo encuentra, lo descargará al repositorio local para futuras referencias.

  • Pasos 3 - Si no se ha configurado el repositorio remoto, Maven se detendrá simplemente en el procesamiento y lanzará un error (no se encontró el archivo de dependencia).

  • Pasos 4 - Busca archivos de dependencias en uno o más repositorios remotos. Si encuentra uno, lo descarga al repositorio local para futuras referencias. De lo contrario, Maven detendrá el procesamiento y lanzará un error (no se encontró el archivo de dependencia).

Repositorio Aliyun (Aliyun) de Maven

El repositorio de Maven por defecto está en el extranjero, lo que puede ser muy lento en China. Podemos cambiarlo al repositorio de Aliyun.

Modificar el archivo settings.xml ubicado en la carpeta conf del directorio raíz de Maven, en el punto de mirrors, agregar el siguiente contenido:

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>

Segundo paso: agregar lo siguiente al archivo pom.xml

<repositories>  
        <repository>  
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
        </repository>  
</repositories>