详解Maven仓库之本地仓库、远程仓库

详解Maven仓库之本地仓库、远程仓库

在 Maven 工程中使用 Maven 仓库是非常常见的一件事,本地仓库是指位于本地计算机中的 Maven 仓库,而远程仓库是指位于远程服务器上的 Maven 仓库。

本地仓库

本地仓库的作用

本地仓库是 Maven 的一个重要概念,Maven 在构建 Java 项目时需要依赖很多的 Jar 包,本地仓库就很好的解决了 Jar 包的管理问题。

本地仓库的位置

本地仓库默认位于用户目录下的 .m2 目录下,可以通过修改 settings.xml 文件来改变本地仓库的位置。在 settings.xml 文件中可以使用如下代码来修改本地仓库位置:

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

本地仓库文件结构

本地仓库的文件结构如下:

.local_repository/
    ├─com/
    │  └─example/
    │      └─example/
    │          └─1.0/
    │              ├─example-1.0.jar
    │              ├─example-1.0.pom
    │              ├─example-1.0-sources.jar
    │              ├─example-1.0-javadoc.jar
    │              └─_remote.repositories
    ├─org/
    │  └─apache/
    │      └─maven/
    │          ├─apache-maven/
    │          │  └─3.6.0/
    │          │      ├─apache-maven-3.6.0-bin.zip
    │          │      ├─apache-maven-3.6.0-src.zip
    │          │      ├─apache-maven-3.6.0-bin.tar.gz
    │          │      ├─apache-maven-3.6.0-src.tar.gz
    │          │      └─_remote.repositories
    │          └─plugins/
    │              ├─maven-compiler-plugin/
    │              │  └─3.5.1/
    │              │      ├─maven-compiler-plugin-3.5.1.jar
    │              │      ├─maven-compiler-plugin-3.5.1.pom
    │              │      └─_remote.repositories
    │              └─maven-surefire-plugin/
    │                  └─2.22.0/
    │                      ├─maven-surefire-plugin-2.22.0.jar
    │                      ├─maven-surefire-plugin-2.22.0.pom
    │                      └─_remote.repositories
    ...

本地仓库中的文件结构中默认按照 Maven 坐标(groupId、artifactId、version)来进行存储。

远程仓库

远程仓库的作用

在进行开发时,我们会遇到一些第三方库,这些库并没有在本地仓库中存在,此时我们就需要借助第三方仓库。在 Maven 中,第三方仓库就表现为远程仓库。远程仓库既可以是公共的,也可以是私有的。

远程仓库的设置

settings.xml 文件中可以使用如下代码来添加远程仓库:

<settings>
  ...
  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
    </repository>
  </repositories>
  ...
</settings>

其中,id 是远程仓库的标识符,url 是远程仓库的地址。

远程仓库中心

Maven 中心仓库就是一个公共的远程仓库,它是 Maven 中心仓库群的主要仓库。在 Maven 应用中,只要你的代码中依赖的 Jar 包在 Maven 中心仓库中发布,那么就可以通过 Maven 自动下载并且自动管理了,所以在设置远程仓库时推荐添加 Maven 中心仓库:

<settings>
  <mirrors>
    <mirror>
      <id>aliyun-maven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/central</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>develop</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>https://maven.aliyun.com/repository/central</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>https://maven.aliyun.com/repository/central</url>
        </pluginRepository>
      </pluginRepositories>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>develop</activeProfile>
  </activeProfiles>
</settings>

代码中增加一个依赖:

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
  </dependency>
</dependencies>

使用 mvn clean install 命令进行构建,可以在本地仓库中看到 junit 的 Jar 包,此时 Maven 就自动从远程仓库中下载了 junit Jar 包,因为 Maven 默认会把中心仓库地址作为远程仓库去下载 Jar 包和 POM 文件。

另外,当我们需要向远程仓库发布自己的 Jar 包时,需要在 pom.xml 文件中添加如下配置内容:

<distributionManagement>
  <repository>
    <id>repo</id>
    <url>http://example.com/repository/</url> <!-- 远程仓库地址 -->
  </repository>
</distributionManagement>

此时在执行 mvn deploy 命令时就会将文件发布到指定的远程仓库中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Maven仓库之本地仓库、远程仓库 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 深入浅出讲解Spring框架中AOP及动态代理的应用

    深入浅出讲解Spring框架中AOP及动态代理的应用 什么是AOP AOP(Aspect Oriented Programming),即面向切面编程,是一种编程范式。这种编程范式可以帮助我们更好地解耦,关注点分离,使得代码更加清晰明了。在Spring框架中,AOP是实现Aspect Oriented Programming的一种方式。 AOP的核心概念 Jo…

    Java 2023年5月19日
    00
  • SpringBoot 整合Security权限控制的初步配置

    下面是 “SpringBoot 整合Security权限控制的初步配置”的完整攻略,包含了基础概念、示例程序与注意事项。 1. 简介 Spring Security 是一个安全框架,提供了认证、授权、攻击防护等一系列的安全功能,是目前比较流行的开源 Java 安全框架之一。 Spring Security 采用基于过滤器的方式实现安全控制,对 URL 进行拦…

    Java 2023年6月3日
    00
  • 详解java基于MyBatis使用示例

    下面是详解“详解java基于MyBatis使用示例”的完整攻略,过程中我会给出两条示例。 介绍 MyBatis是一个Java持久化框架,可以帮助我们简化操作数据库的过程。本文将介绍如何在Java项目中使用MyBatis。 步骤 第一步:添加MyBatis依赖 在项目的pom.xml文件中添加以下代码: <dependency> <group…

    Java 2023年5月20日
    00
  • uniapp 获取系统信息的方法小结

    下面是详细讲解“UniApp 获取系统信息的方法小结”的完整攻略。 简介 UniApp 是一款跨平台开发框架,可支持将一份代码编译成多个平台的应用程序。在 UniApp 应用程序中,我们通常需要获取设备的一些系统信息,比如设备型号、操作系统版本等。UniApp 提供了几个 API 可以帮助我们获取这些系统信息。本文将对这些 API 进行总结和讲解。 获取设备…

    Java 2023年5月23日
    00
  • Java中字符序列的替换与分解的几种实现方法

    Java中字符序列的替换与分解的几种实现方法 字符串(String)是Java编程中最常见的数据类型之一。但是,如果我们要处理字符串中包含的字符序列时,String类的效率并不高。字符串的每次修改都会导致创建一个新的字符串对象,这会很容易造成内存泄漏和效率低下的问题。为了克服这些问题,Java提供了两种更适合于字符操作的数据类型:StringBuilder和…

    Java 2023年5月27日
    00
  • 第一次使用Android Studio时你应该知道的一切配置(推荐)

    以下是详细讲解“第一次使用Android Studio时你应该知道的一切配置(推荐)”的完整攻略。 1. 安装Android Studio 首先,需要前往Android官网下载并安装Android Studio。在安装过程中,按照提示完成安装即可。 2. 配置SDK和JDK 安装完Android Studio后,需要配置SDK和JDK。打开Android S…

    Java 2023年5月20日
    00
  • java基础检查和未检查异常处理详解

    Java基础检查和未检查异常处理详解 在Java开发中,异常处理是非常重要的一个方面。Java的异常分为两大类:检查异常和未检查异常。本文将详细讲解Java基础检查和未检查异常处理的完整攻略。 Java检查异常 检查异常是指在编译期就能检查出来的异常,如果不处理这些异常,编译器会报错,无法通过编译。为了避免这种情况的发生,我们必须在代码中处理这些异常。Jav…

    Java 2023年5月27日
    00
  • 浅析Java常用API(Scanner,Random)匿名对象

    那么让我们来浅析Java常用API(Scanner,Random)匿名对象的攻略。 什么是匿名对象 在Java中,我们可以通过new 关键字创建一个对象,然后用这个对象调用它所对应的方法。而匿名对象就是使用对象名称时,省略了对象的创建过程,直接调用对象方法或属性。称之为匿名对象。 匿名对象的优缺点 匿名对象的优点是可以方便快速的创建出对象,并且可以一次性调用…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部