0%

maven | maven 如何知道从哪里下载库

这里解释了 maven 如何知道从哪里下载依赖包。


环境


  • win10

场景


  • 电脑上的 maven 环境
  • IDEA 上的 maven 环境

maven 的拉包顺序

Maven中,仓库分为以下两类:

  • 本地仓库
  • 远程仓库

Maven 根据依赖坐标去仓库中找对应的包,是遵循这样的一个轨迹:

  • 首先去本地仓库查找,如果本地仓库有对应的依赖包,则直接就使用;
  • 如果本地仓库不存在对应包时,或者需要查看是否有更新的包版本时,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库在使用;
  • 如果本地仓库和远程仓库都没有需要的包,Maven就会报错。

远程仓库,maven 有分为

  • 中央仓库
  • 私服
  • 其他公共库

电脑上的 maven 环境

首先,要先看一下电脑的环境变量,即

MAVEN_HOME

我的是

D:\mvn\bin

D:\mvn\conf 有一个文件叫做 settings.xml ,打开后,有一个

标识为 localRepository ,里面的路径就是从某个地方拉下来的包,这个地址就是本地仓库。

通常为 ~/.m2/repository ,你也可以修改路径到其他文件夹中。

另外,我们可以在 settings.xml 中自定义私库地址。

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
77
<servers>
<server>
<id>nexus-central</id>
<username>***</username>
<password>***</password>
</server>
<server>
<id>nexus-releases</id>
<username>***</username>
<password>***</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>***</username>
<password>***</password>
</server>
</servers>

<!-- mirrors
| This is a list of mirrors to be used in downloading artifacts from remote repositories.
|
| It works like this: a POM may declare a repository to use in resolving certain artifacts.
| However, this repository may have problems with heavy traffic at times, so people have mirrored
| it to several places.
|
| That repository definition will have a unique id, so we can create a mirror reference for that
| repository, to be used as an alternate download site. The mirror site will be the preferred
| server for that repository.
|-->
<mirrors>
<mirror>
<id>nexus-central</id>
<!--*指的是访问任何仓库都使用我们的私服-->
<mirrorOf>*</mirrorOf>
<name>Nexus Central</name>
<url>http://crs***public/</url>
</mirror>
</mirrors>

<profiles>
<profile>
<id>nexus</id>
<repositories>
<!-- 私有库地址-->
<repository>
<id>nexus</id>
<url>http://crs***-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!--插件库地址-->
<pluginRepository>
<id>nexus</id>
<url>http://crscd.onli***ic/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>

这样就指明了,你会从什么地方拉包。

当读取 pom.xml 文件的时候,就会执行上面说的拉包步骤。

IDEA 上的 maven 环境

请参考

个人更推荐这个方法。

请我喝杯咖啡吧~