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/
相关推荐
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
一叶飘零_sweeeet4 小时前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8
艾伦~耶格尔5 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
一只叫煤球的猫5 小时前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试
最初的↘那颗心5 小时前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
JH30736 小时前
Maven的三种项目打包方式——pom,jar,war的区别
java·maven·jar
带刺的坐椅7 小时前
轻量级流程编排框架,Solon Flow v3.5.0 发布
java·solon·workflow·flow·solon-flow
David爱编程7 小时前
线程调度策略详解:时间片轮转 vs 优先级机制,面试常考!
java·后端
阿冲Runner8 小时前
创建一个生产可用的线程池
java·后端
写bug写bug8 小时前
你真的会用枚举吗
java·后端·设计模式