这篇文章主要介绍了Maven仓库分类的优先级是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Maven仓库分类的优先级是什么文...
这篇文章主要介绍了Maven仓库分类的优先级是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇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仓库分类的优先级是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注捷杰建站行业资讯频道。