maven repo and mirror

https://www.cnblogs.com/buptl/p/6880031.html

 

原文地址: https://lcy362.github.io/posts/32793/

maven里的mirror和repository是两个比较容易混淆的概念,它们的作用都是配置远程maven仓库的地址。顾名思义,repository就是直接配置站点地址,mirror则是作为站点的镜像,代理某个或某几个站点的请求,实现对repository的完全代替。

repository

有两种形式可以配置多个repository, 配置多个profile或者在同一个profile中配置多个repository.配置多profile时,还需要配置activeProfiles使配置生效。

配置示例:

        <profiles>
		</profile>
			<profile>
			<id>central</id>
			<repositories>
				<repository>
					<id>central</id>
					<url>http://search.maven.org/</url>
					<!-- <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> 
						</snapshots> -->
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>false</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>central</id>
					<url>http://search.maven.org/</url>
					<releases>
						<enabled>false</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>
		<profile>
			<id>aliyun</id>
			<repositories>
				<repository>
					<id>aliyun</id>
					<url>http://maven.aliyun.com/nexus/content/groups/public</url>
					<!-- <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> 
						</snapshots> -->
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>aliyun</id>
					<url>http://maven.aliyun.com/nexus/content/groups/public</url>
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>
            </profiles>

            <activeProfiles>
		<activeProfile>aliyun</activeProfile>
		<activeProfile>central</activeProfile>
	   </activeProfiles>

单profile,多repository的配置也类似。

这样就实现了多站点的配置。下载依赖时,maven会按照配置从上到下的顺序,依次尝试从各个地址下载,成功下载为止

mirror

个人感觉mirror的存在有些鸡肋,如果不想用repository里配的地址,完全可以直接改掉,而不用再加一条mirror配置

如果setting.xml和pom里都配置了repository, 配置的mirror是可以对两个配置文件都生效的,这可能是mirror存在的唯一意义。

mirror的配置示例:

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

使用mirrorOf指定这个镜像是针对哪个repository的,配置成*就表示要代理所有repository的请求。

需要注意的是,与repository不同,配置到同一个repository的多个mirror时,相互之间是备份的关系,只有在仓库连不上的时候才会切换另一个,而如果在能连上的情况下找不到包,是不会尝试下一个地址的。

所以,一般情况下,无论是配置国内的maven仓库,还是配置nexus之类私服,都可以直接配置成repository, 这样即使配置的这些仓库有些问题导致一些包下不下来,也可以继续用别的仓库尝试。

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<settings>
    <localRepository>C:\Users\USERNAME\.m2\repository</localRepository>
    <servers>
        <server>
            <id>pdevone</id>
            <name>pdevoneservername</name>
            <username>USERNAME</username>
            <password>PASSWORD</password>
        </server>
        <server>
            <id>pdevtwo</id>
            <name>pdevtwoservername</name>
            <username>USERNAME</username>
            <password>PASSWORD</password>
        </server>
        <server>
            <id>rdevone</id>
            <name>rdevoneservername</name>
            <username>USERNAME</username>
            <password>PASSWORD</password>
        </server>
        <server>
            <id>rdevtwo</id>
            <name>rdevtwosservername</name>
            <username>USERNAME</username>
            <password>PASSWORD</password>
        </server>
    </servers>
    <profiles>
        <profile>
            <activation>
                <activeByDefault>True</activeByDefault>
            </activation>
            <pluginRepositories>
                <pluginRepository>
                    <id>pdevone</id>
                    <name>pdevonename</name>
                    <url>https://urldev1</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>pdevtwo</id>
                    <name>pdevtwoname</name>
                    <url>https://urldev2</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </pluginRepository>
            </pluginRepositories>
            <repositories>
                <repository>
                    <id>rdevone</id>
                    <name>rdevonename</name>
                    <url>https://urldev1</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>rdevtwo</id>
                    <name>rdevtwoname</name>
                    <url>https://urldev2</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
</settings>

 

  

 

posted on   silyvin  阅读(97)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2020-05-04 使用MAT时的Shallow Size和 Retained Size的区别
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示