详解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整合mybatis实现过程详解

    下面是“Spring整合mybatis实现过程详解”的完整攻略。 简介 Spring和MyBatis是两个非常流行的Java框架,常常被用来搭建底层的Web应用程序。其中,Spring作为一种IOC容器和AOP框架,可以管理Java中的对象,控制对象之间的依赖关系,以及提供统一的事务管理等功能;而MyBatis则是一种ORM框架,可以将Java对象映射到关系…

    Java 2023年5月19日
    00
  • java基础学习笔记之泛型

    Java基础学习笔记之泛型 简介 Java 泛型 (generics) 是 JDK 1.5 版本引入的一种数据类型,能够让程序员在编写代码时指定一些类型约束,可以更加简洁安全地使用泛型类型,提高代码的可读性和可维护性。 泛型的作用 泛型可以帮助程序员定义更加通用的代码模板,可以用来限定集合类的元素类型,避免运行时类型转换,提高程序的稳定性和效率。 泛型还可以…

    Java 2023年5月26日
    00
  • JS+Struts2多文件上传实例详解

    JS+Struts2多文件上传实例详解 简介 在现代web应用中,文件上传功能变得越来越常见。本文将介绍如何使用JavaScript和Struts2框架实现多文件上传功能。 实现步骤 1. 在HTML中创建上传表单 首先,在HTML页面中创建文件上传表单。使用<input>元素来创建上传表单并指定type=”file”。此外,我们还需在form元…

    Java 2023年5月20日
    00
  • SpringBoot接口接收json参数解析

    接下来我将为你详细讲解SpringBoot接口接收Json参数解析的完整攻略,包含以下流程: 创建SpringBoot项目 定义数据模型 定义控制器 确定请求方式 接收与解析Json参数 处理请求数据 接下来将逐步讲解每一个步骤。 1. 创建SpringBoot项目 我们首先需要创建一个SpringBoot项目,可以使用Spring官方提供的Spring I…

    Java 2023年5月20日
    00
  • SpringBoot实现动态配置及项目打包部署上线功能

    关于 SpringBoot 实现动态配置及项目打包部署上线功能的攻略,我们可以分为以下几个步骤: 在项目中引入 SpringBoot 的配置应用依赖; 实现动态配置功能,可以使用 SpringCloudConfig 或者自定义实现; 打包部署并上线项目,可使用 Docker 镜像部署等方式。 下面我们来逐步详细介绍这些步骤。 引入 SpringBoot 配置…

    Java 2023年5月19日
    00
  • Java中Properties类的操作实例详解

    Java中Properties类的操作实例详解 Properties类是什么? Properties类是Java中常用的一个类,主要用于处理属性文件。属性文件是一种配置文件,其中包含了键值对,用于保存程序运行时需要动态设置的参数值,例如数据库连接参数、日志输出级别等等。 Properties类的基本用法 Properties类位于java.util包中,可以…

    Java 2023年6月15日
    00
  • 浅谈异常结构图、编译期异常和运行期异常的区别

    浅谈异常结构图、编译期异常和运行期异常的区别攻略 异常结构图 异常结构图通常用来描述异常的类型、继承关系以及异常的处理架构。通常情况下,异常结构图包括三部分:Throwable、Error和Exception。其中,Throwable是所有异常类型的根类,Error用来描述系统级错误,Exception则是普通异常的父类。 graph TD Throwabl…

    Java 2023年5月27日
    00
  • Java的Struts框架报错“NullChainException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NullChainException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此。在这种情况下,需要检查文件以解决此问题。 链名称:如果链名称不正确,则可能出现此。在这种情况下,需要检查链名称以解决此问题。 以下是两个实例: 例 1 如果配置文件中没有正确配置,则…

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