Maven仓库分类的优先级

 更新时间:2023年04月21日 08:53:38   作者:qq_547026179  
本文主要介绍了Maven仓库分类的优先级,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.仓库的分类

maven的仓库主要是用于存储及管理项目中所依赖的组件。可分为本地仓库远程仓库,远程仓库有可以细分为中央仓库私有仓库,中央仓库主要是由maven的开发团队负责开发管理的一些公共组件的公用的仓库;私有仓库主要是指个人通过一些第三方平台搭建的自己的专属仓库;私有仓库又可以根据配置的位置不同可分为全局profile仓库项目profile仓库项目仓库镜像仓库

本地仓库:本地仓库默认是在.m2文件夹中,可以通过settings.xml文件的标签来指定本地仓库的目录。

<localRepository>D:\Work\Maven\repositoryNexus</localRepository>

全局profile仓库:通过 settings.xml 中的 profiles.profile.repositories.repository 配置,对所有使用该maven的项目都生效。

  <profiles>
   <profile>
   	<id>dev</id>
    <repositories>
      <repository>
        <id>nexus-repo</id>
        <name>nexus-repo</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <layout>default</layout>
		<releases><enabled>true</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
      </repository>
    </repositories>
  </profile>
  </profiles>
  <!--激活profile-->
  <activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>

项目profile仓库:通过项目的pom.xml 中的 profiles.profile.repositories.repository 配置,仅对该maven的项目都生效。

 <profiles>
   <profile>
   	<id>dev</id>
    <repositories>
      <repository>
        <id>nexus-repo</id>
        <name>nexus-repo</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <layout>default</layout>
		<releases><enabled>true</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
      </repository>
    </repositories>
    <!--激活profile-->
    <activation>
		<activeByDefault>true</activeByDefault>
	</activation>
  </profile>
  </profiles>

项目仓库:通过项目的pom.xml 中的 repositories.repository 配置,仅对该maven的项目都生效。

<repositories>
	<repository>
		<id>snapshots</id>
		<name>snapshots-repo</name>
		<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
		<layout>default</layout>
		<snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
			<checksumPolicy>warn</checksumPolicy>
		</snapshots>
		<releases>
			<enabled>false</enabled>
			<updatePolicy>always</updatePolicy>
			<checksumPolicy>warn</checksumPolicy>
		</releases>
	</repository>
</repositories>

镜像仓库:通过 settings.xml 中的 mirrors.mirror 配置。主要提供一个方便切换远程仓库地址的途径。

<mirror>
  <id>nexus-aliyun</id>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

中央仓库:是maven默认的远程仓库,在maven的lib安装目录中有一个maven-model-builder-3.0.4.jar,在这个jar包中有个org/apache/maven/model/pom-4.0.0.xml文件,在这个pom文件中就配置了中央仓库,默认的中央仓库的id为central

<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

2.仓库的优先级

maven构建的时候,先从本地仓库去寻找组件,本地仓库找不到再去远程仓库中寻找,所以本地仓库的优先级要高于远程仓库。

要点:
(1)当配置多个repository时,无论是配置在settings.xml文件还是pom.xml文件中,依次从这些仓库中查找,如果第一个仓库能找到,就用第一个仓库,如果找不到,就依次往下找。
(2)当同时配置了多个repository和mirror时,如果当中某个repository的id与mirror的mirrorOf的内容相同时,则表示这个仓库被镜像了,将不在从该repository对应的url地址下载组件,而是直接从mirror中的url地址去下载组件。如果repository中的id都没有与mirror的mirrorOf的内容相同时,则依次从这些repository和mirror对应的url地址去查找,直到找到为止。
(3)当mirrorOf的内容为*时,则表示该镜像可以是所有仓库的镜像,无论配置了多少个仓库,都不会从这些仓库对应的url地址去下载组件,只会从这个mirror中的url地址去下载组件。

到此这篇关于Maven仓库分类的优先级的文章就介绍到这了,更多相关Maven仓库优先级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java对象转JSON时动态的增删改查属性详解

    Java对象转JSON时动态的增删改查属性详解

    这篇文章主要介绍了Java对象转JSON时如何动态的增删改查属性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • JavaSE实现猜拳游戏

    JavaSE实现猜拳游戏

    这篇文章主要为大家详细介绍了JavaSE实现猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • Java使用延时队列搞定超时订单处理的场景

    Java使用延时队列搞定超时订单处理的场景

    这篇文章主要介绍了Java使用延时队列搞定超时订单处理,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • SpringBoot项目读取外置logback配置文件的问题及解决

    SpringBoot项目读取外置logback配置文件的问题及解决

    SpringBoot项目读取外置logback配置文件的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • JVM分配和回收堆外内存的方式与注意点

    JVM分配和回收堆外内存的方式与注意点

    JVM启动时分配的内存称为堆内存,与之相对的,在代码中还可以使用堆外内存,比如Netty,广泛使用了堆外内存,下面这篇文章主要给大家介绍了关于JVM分配和回收堆外内存的方式与注意点,需要的朋友可以参考下
    2022-07-07
  • Java算法之位图的概念和实现详解

    Java算法之位图的概念和实现详解

    这篇文章主要介绍了Java算法之位图的概念和实现详解,位图可以利用每一位来对应一个值,比如可以利用int类型的数去存储0~31这个集合的数字,如果该集合内的数字存在,则把对应的位设置位1默认为0,需要的朋友可以参考下
    2023-10-10
  • Java使用正则表达式判断独立字符的存在(代码示例)

    Java使用正则表达式判断独立字符的存在(代码示例)

    通过使用正则表达式,我们可以更加灵活地判断字符串中是否包含特定的字符,并且可以控制匹配的条件,如独立的字符,这为我们处理字符串提供了更多的选择和功能,这篇文章主要介绍了Java使用正则表达式判断独立字符的存在,需要的朋友可以参考下
    2023-10-10
  • 详解SpringBoot同时可以处理多少请求

    详解SpringBoot同时可以处理多少请求

    在日常操作中,相信很多人在SpringBoot能同时处理多少请求问题上存在疑惑,本文就来详细的介绍一下,感兴趣的可以了解一下
    2024-06-06
  • SpringBoot修改子模块Module的jdk版本的方法 附修改原因

    SpringBoot修改子模块Module的jdk版本的方法 附修改原因

    这篇文章主要介绍了SpringBoot修改子模块Module的jdk版本的方法 附修改原因,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Resttemplate上传文件500异常的原因及解决方法

    Resttemplate上传文件500异常的原因及解决方法

    使用 Resttemplate 调用 DMS 文件服务器 Http 接口,出现 500 异常报错,所以本文给大家介绍了Resttemplate上传文件500异常的原因及解决方法,需要的朋友可以参考下
    2024-08-08

最新评论