Maven镜像mirror和仓库repository的关系

Maven镜像mirror是为了解决依赖下载的速度问题,仓库repository是使用指定的仓库下载依赖。

maven下载依赖的流程

以编译工程下载依赖为例:localRepository本地仓库-》nexus私服(如果有)-》中央仓库
具体如下:

  1. mavensettings配置的localRepository本地仓库查找依赖
  2. 本地仓库没有,根据pom文件或者settings配置的repository仓库查找依赖
  3. 如果settings配置了mirror,第二步的请求会被拦截,并使用mirror配置的url仓库查找依赖,即mirrorOf的配置会影响拦截的请求,一般情况下配置的是自己公司的私服
    3.1.mirrorOf配置*,无论pomsettings配置的repository仓库的url是什么,仓库url都会被替换成mirror中配置的url
    3.2.mirrorOf配置业界公认可选值,此时mirrorurl也应该是其匹配的仓库地址
    3.3.mirrorOf自定义,一般情况下和pomsettings配置的repositoryid保持一致,这样镜像会拦截匹配的仓库的请求,不匹配的走中央仓库;如果都不匹配,遍历镜像并下载依赖;部分匹配,拦截匹配并下载,其他不匹配的遍历镜像并下载。
    3.4.其他配置,例如一个镜像以逗号分隔,配置多个mirrorOf,所有拦截的请求使用同一个仓库
    3.5.实际上mirrorOf只是镜像url的一个别名,用来拦截仓库请求并转发到镜像配置的url
  4. 如果镜像中拦截所有请求到私服,但私服中没有,私服会和中央仓库打交道拉取依赖

mirrorOf配置原则

  1. 自定义时,和pomsettings配置的repositoryid保持一致
  2. 如果所有的请求都拦截到自己的私服,那么使用*
  3. 没什么原则,符合你的需求即可

配置案例

settings的镜像,idname自定义,id保证唯一,mirrorOf配置*拦截所有请求到私服

settings.xml配置

<mirrors>
	<mirror>
		<id>nexus</id>
		<name>nexus</name>
		<mirrorOf>*</mirrorOf>
		<url>http://192.168.1.11:8081/nexus/content/groups/public</url>
	</mirror>
</mirrors>
<!--激活配置 -->
<activeProfiles>
	<activeProfile>nexus</activeProfile>
</activeProfiles>
<profiles>
	<profile>
		<id>nexus</id>
		<repositories>
			<repository>
				<id>nexus</id>
				<name>Nexus</name>
				<url>http://192.168.1.11:8081/nexus/content/groups/public</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
		</repositories>
		<pluginRepositories>
			<pluginRepository>
				<id>nexus</id>
				<name>Nexus</name>
				<url>http://192.168.1.11:8081/nexus/content/groups/public</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</pluginRepository>
		</pluginRepositories>
	</profile>
	<profile>
		<id>env-dev</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.7</jdk>
		</activation>
		<properties>
			<maven.compiler.source>1.7</maven.compiler.source>
			<maven.compiler.target>1.7</maven.compiler.target>
			<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
		</properties>
	</profile>
</profiles>

settingsprofile配置仓库或者项目pom文件中配置仓库

pom.xml中的配置

<repositories>
	<repository>
		<id>nexus</id>
		<name>Nexus</name>
		<url>http://192.168.1.11:8081/nexus/content/groups/public</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
		</snapshots>
	</repository>
</repositories>

<pluginRepositories>
	<pluginRepository>
		<id>nexus</id>
		<name>Nexus</name>
		<url>http://192.168.1.11:8081/nexus/content/groups/public</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
		</snapshots>
	</pluginRepository>
</pluginRepositories>
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.[今日课程内容总览] Maven--***** 介绍 优点 用maven创建一个项目, 用maven创建一个ssm项目,每一层的代码分开,把一个项目拆解成多个项目 2.[今日包含笔记] maven介绍: Eclise: 缺点: Jar包: 版本管理,解决jar包冲突:删除老的jar包,保留新的jar包 不同的项目,jar包要复制一份;Users Library 羡慕yum的好处,安装软件,自动下载,自动验证,自动安装,自动测试;镜像网站 Jar包的依赖: 致命的缺点:现象: 每一个项目都有前台(广大网民)和后台(管理员看的),后台的功能远远的大于>前台的功能;迭代升级;每次升级都要重启tomcat;将tomcat做很多个备份(10个),为了nginx转发;前台:访问比较大,管理员访问量比较小; 问题: 每次升级,10个tomcat都升级一次 后台的升级频繁要比前台频繁;升级10次,9次改的是后台的代码,只有一次是前台的代码 解决方案: 是将前台(广大网民看的页面)的代码和后台(管理员)的代码要分开,将原来的一个项目分别放到两个web项目;一个web项目一个tomcat;好处:更新的时候如果更新后台(管理员),只需要重启后台的tomcat(服务); 折成两个项目以后的缺点:Service以下的代码重复; 将Service层以下的代码放到一个新创建的java项目中,在部署的时候将Service(java项目)打成一个jar包,分别放到两个web服务中;编译的时候让web项目依赖与Service(java项目)_source folder;配置麻烦,项目与项目之间的依赖头脑得相当清晰 这个缺点Maven解决了; 请听今天的内容 拆分前:图一 拆分后是图二 3. 介绍 官网:http://maven.apache.org/download.cgi 目录介绍: Bin:二进制文件 Boot:引导,启动 Conf:配置文件 Lib:jar包 README.txt:读我 3.1.修改配置文件的内容 路径:%MAVEN_HOME%\conf\settings.xml 配置文件代码: d:/repo alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central 注意: 千万不要将文档中的setting的内容全部替换到maven中的内容,要对比着修改,保留原来的; 只修改本地仓库,和下载镜像(源) 3.2.Eclipse Maven的配置 每打开一个新的工作空间,要配置一下Maven,然后再写代码 3.3.创建Maven项目 右击创建一个maven project Packing:有三种: Jar:java项目, War:web项目 Pom:文件夹,jar和war文件,mavenProject:一个项目,可以放jar和war包,通过pom,一般新创建的maven Project是POM 3.4.创建一个Maven Model 最外面的项目是MavenProject,其它的全部是Maven Model 3.4.1.创建JAR 目录介绍: Mvn-jar |-->Src:源码:java代码 |-->|-->main:代码:除测试以外的代码:junit |-->|-->main|-->java:代码 |-->|-->main|--

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值