• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

maven 配置 本地仓库 远程仓库 Repository

maven Settings 配置文档:https://maven.apache.org/ref/3.9.8/maven-settings/settings.html


1. maven Repository(仓库)分类

image.png

local repository

存放在maven所在机本地磁盘的一个文件夹,默认是:{user-home}\.m2\repository目录

remote repository:相当于公共的仓库,有三种

  • 中央仓库:http://repo1.maven.org/maven2/ 

  • 私服:内网自建的maven repository,其URL是一个内部网址 

  • 其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository等

2. 项目请求依赖过程

当向仓库请求插件或依赖的时候,会:

  1. 先检查local repository,如果local repository有则直接返回

  2. 否则会向 remote repository 请求,并缓存到local repository。

3. 镜像 mirrors(速度)

mirror相当于一个拦截器,它会拦截maven对 remote repository 的相关请求,把请求里的remote repository地址,重定向到 mirror里配置的地址

配置镜像一般是出于访问速度和下载速度考虑

	<mirrors>
		<mirror>
			<id>ManaphyMirror</id>
			<mirrorOf>*</mirrorOf>
			<name>Manaphy Repository Mirror.</name>
			<url>http://192.168.2.132:8081/repository/maven-public/</url>
		</mirror>
	</mirrors>


  • id:用来区分不同的mirror元素

  • name:自定义镜像的名称描述信息

  • url:是该镜像的 URL

  • mirrorOf:是被镜像的 Repository id

    • <mirrorOf>central</mirrorOf>Maven 中央仓库 http://repo1.maven.org/maven2  的镜像

    • <mirrorOf>*</mirrorOf>匹配所有远程仓库

    • <mirrorOf>repo1,repo2</mirrorOf> :匹配仓库repo1和repo2,多个用逗号隔开


需要注意的是

由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven将无法访问被镜像仓库,因而将无法下载构件


4. 私有仓库 Repository

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。另外,对于自定义第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。

image.png

当Maven需要下载构件的时候,

  1. 本地仓库没有

  2. 它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载缓存在私服上之后

  3. 再为Maven的下载请求提供服务

<repositories>  
        <repository>  
            <id>jboss</id>  
            <name>JBoss Repository</name>  
            <url>http://repository.jboss.com/maven2/</url>  
            <releases>  
                <enabled>true</enabled>  
                <updatePolicy>daily</updatePolicy><!-- never,always,interval n -->  
                <checksumPolicy>warn</checksumPolicy><!-- fail,ignore -->  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
            <layout>default</layout>  
        </repository>  
</repositories>


  • id:仓库声明的唯一id

    • Maven自带的中央仓库使用的id为central,如果其他仓库声明也使用该id,就会覆盖中央仓库的配置。

  • name:自定义仓库的名称描述信息

  • url:指向了仓库的地址

    • 一般来说,该地址都基于http协议,Maven用户都可以在浏览器中打开仓库地址浏览构件。

  • releases 和 snapshots:用来控制Maven对于发布版构件(稳定版)快照版构件(开发测试版)下载权限

    • enabled: 开启下载权限

  • layoutdefault(默认值)表示仓库的布局Maven2Maven3的默认布局,而不是Maven1的布局

releases 和 snapshots 还包含另外两个子元素updatePolicy和checksumPolicy。

updatePolicy:从远处仓库检查更新的频率。

  • daily默认):每天检查一次;

  • never-从不检查更新;

  • always-每次构建都检查更新;

  • interval:X-每隔X分钟检查一次更新(X为任意整数)

checksumPolicy:用来配置Maven检查校验和文件的策略。如果校验和验证失败采取的策略

  • warn默认)时,Maven会在执行构建时输出警告信息;

  • fail-Maven遇到校验和错误就让构建失败

  • ignore-使Maven完全忽略校验和错误。


5. 认证 仓库

若 镜像或者私有仓库,需要认证,配置 setting.xml 中的 <server></server>  

<servers>  
        <server>  
            <id>same with repository id in pom</id>  
            <username>username</username>  
            <password>pwd</password>  
        </server>  
</servers>
  • id镜像 或者 私有仓 id





0
0
下一篇:innerHTML、outerHTML 和 innerText 、outerText的区别

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。