Several types of Maven repositories

In the context of Maven, a "repository" refers to a storage location for artifacts such as JAR files, POM files, and other resources needed during the build and deployment processes. There are several types of Maven repositories, and their differences can be summarized as follows:


1. Local Repository

  • Description: A repository located on your local machine where Maven stores all downloaded dependencies.

  • Default Location :

    • ~/.m2/repository (on Linux/Mac)
    • C:\Users\<User>\.m2\repository (on Windows)
  • How It Works :

    • When you build a Maven project, it first looks for dependencies in the local repository.
    • If not found, it downloads from remote repositories and caches them locally.
  • Configuration : Can be customized in the settings.xml file.

    <localRepository>/path/to/local/repo</localRepository>


2. Remote Repository

  • Description: A central location on the internet or an organization's network that hosts Maven artifacts.

  • Examples :

    • Maven Central (https://repo.maven.apache.org/maven2/)
    • JCenter (deprecated)
    • Custom Nexus/Artifactory repositories.
  • Usage :

    • Maven queries remote repositories if the dependency is not found locally.
  • Configuration : Add remote repositories in the pom.xml or settings.xml.

    <repositories> <repository> <id>central</id> <url>https://repo.maven.apache.org/maven2</url> </repository> </repositories>


3. Central Repository

  • Description: The default remote repository used by Maven to download dependencies.
  • URL : https://repo.maven.apache.org/maven2/
  • Characteristics :
    • Publicly accessible.
    • Maintained by the Maven project.
  • No Additional Configuration Required :
    • Maven uses this repository by default unless explicitly overridden.

4. Private/Corporate Repository

  • Description: A repository set up by an organization to host internal or third-party artifacts not available in public repositories.

  • Tools :

    • Nexus Repository Manager
    • JFrog Artifactory
    • AWS CodeArtifact
  • Benefits :

    • Enhanced control over dependencies.
    • Secure and private storage for proprietary code.
  • Configuration :

    <repositories> <repository> <id>corporate-repo</id> <url>https://my.corporate.repo/repository/maven-releases/</url> </repository> </repositories>


5. Snapshot Repository

  • Description : Dedicated to hosting -SNAPSHOT artifacts, which represent development versions of a project.

  • Usage :

    • When a project is under development, frequent updates may occur.
    • SNAPSHOT versions are updated dynamically in the repository.
  • Configuration Example :

    <repositories> <repository> <id>snapshots</id> <url>https://my.corporate.repo/repository/maven-snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>


6. Release Repository

  • Description: Hosts stable and released versions of artifacts (non-SNAPSHOT versions).

  • Usage :

    • Used for production-ready artifacts.
    • Once deployed to the release repository, the artifacts are immutable.
  • Configuration Example :

    <repositories> <repository> <id>releases</id> <url>https://my.corporate.repo/repository/maven-releases/</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories>


Key Differences Between Maven Repositories:

Type Location Purpose Example URL
Local Repository Local filesystem Cache dependencies locally for faster builds. ~/.m2/repository
Remote Repository Internet or network server Fetch dependencies not found locally. https://repo.maven.apache.org/maven2/
Central Repository Internet Default repository for Maven. https://repo.maven.apache.org/maven2/
Private Repository Private network Store proprietary or internal artifacts. https://my.corporate.repo/...
Snapshot Repository Internet/Private network Host development artifacts (-SNAPSHOT). https://my.repo.com/maven-snapshots/
Release Repository Internet/Private network Host production-ready, immutable artifacts (non-SNAPSHOT). https://my.repo.com/maven-releases/
相关推荐
豐儀麟阁贵3 分钟前
8.1 异常概述
java·开发语言
qq_124987075340 分钟前
基于springboot的疾病预防系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·毕业设计
麦烤楽鸡翅41 分钟前
简单迭代法求单根的近似值
java·c++·python·数据分析·c·数值分析
火星数据-Tina1 小时前
低成本搭建体育数据中台:一套 API 如何同时支撑比分网与 App?
java·前端·websocket
lcu1111 小时前
Java 学习38:ArrayList 类
java
q***2511 小时前
Spring Boot 集成 Kettle
java·spring boot·后端
筱顾大牛2 小时前
IDEA使用Gitee来创建远程仓库
java·gitee·intellij-idea
懂得节能嘛.2 小时前
【SDK开发实践】从Java编码到阿里云制品仓库部署
java·阿里云·maven
空空kkk2 小时前
SpringMVC——异常
java·前端·javascript
重整旗鼓~2 小时前
1.大模型使用
java·语言模型·langchain