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/
相关推荐
布谷歌1 分钟前
常见的OOM错误 ( OutOfMemoryError全类型详解)
java·开发语言
eLIN TECE20 分钟前
springboot和springframework版本依赖关系
java·spring boot·后端
老神在在00136 分钟前
Spring Bean 的六种作用域详解
java·后端·spring
仙草不加料39 分钟前
互联网大厂Java面试故事实录:三轮场景化技术提问与详细答案解析
java·spring boot·微服务·面试·aigc·电商·内容社区
程序员老邢44 分钟前
【技术底稿 19】Redis7 集群密码配置 + 权限锁死 + 磁盘占满连锁故障真实排查全记录
java·服务器·经验分享·redis·程序人生·微服务
落魄江湖行1 小时前
基础篇一 Java 有了 int 为什么还要 Integer?它们到底差在哪?
java·面试·八股文
LiLiYuan.2 小时前
【Java 6种线程状态】
java·开发语言
itzixiao3 小时前
L1-047 装睡 (5分)[java][python]
java·开发语言·python
用户298698530143 小时前
不用无头浏览器,Java 如何将 HTML 转成图片?
java·后端
Chengbei113 小时前
红队专属Bing Dork自动化工具,敏感信息侦察效率拉满、自动生成可视化信息泄露审计报告
java·人工智能·安全·web安全·网络安全·自动化·系统安全