0 下载依赖的过程
1 默认情况下maven会去中央仓库central找依赖或插件
- 无需额外配置
2 配置多个repository仓库时会先查找central仓库再依此查找多个repository仓库
- 需要配置
<profile><id>myprofile1</id><!--依赖仓库配置--><repositories><!--配置一个依赖仓库--><repository><!--可以被mirrorOf拦截的id--><id>myrepo1</id><!--备注信息--><name>xxx</name><url>https://xxx.xxx.xxx.xxx/xxx/xxxx</url><!--允许从此仓库中下载realease版本依赖--><releases><enabled>true</enabled></releases><!--允许从此仓库中下载snapshot版本依赖--><snapshots><enabled>true</enabled></snapshots></repository><!--配置一个依赖仓库--><repository><id>myrepo2</id><name>xxx</name><url>http://xxx.xxx.xxx/xxx/xxx</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><!--插件仓库配置--><pluginRepositories><!--配置一个插件仓库--><pluginRepository><!--可以被mirrorOf拦截的id--><id>myrepo1</id><name>xxx</name><url>https://xxx.xxx.xxx.xxx/xxx/xxxx</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository><!--配置一个插件仓库--><pluginRepository><id>myrepo2</id><name>xxx</name><url>http://xxx.xxx.xxx/xxx/xxx</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories>
</profile>
<!--使配置生效的两种方式-->
<!--方式一(要放在profile标签里面的id标签同级的位置)-->
<activation> <activeByDefault>true</activeByDefault>
</activation><!--方式二-->
<activeProfiles><!--允许配置多个activeProfile--><activeProfile>myprofile1</activeProfile>
</activeProfiles>
3 配置mirror仓库时会拦截指定的查找请求转向自身
- 需要配置
<mirror> <id>myrepo01</id><!--备注信息--><name>xxx</name><!--拦截对中央仓库的请求--> <mirrorOf>central</mirrorOf><url>https://xxx.xxx/xxx/xx/xx/xx/xx</url>
</mirror>
<mirror> <id>myrepo02</id><!--备注信息--><name>xxx</name><!--拦截对myrepo1仓库的请求--><mirrorOf>myrepo1</mirrorOf><url>http://xxx.xx/xxx/x/x/x/x</url>
</mirror>
*注意 mirrorOf支持通配符
<!--出现如下配置时 当去central下载依赖或插件时会被<mirrorOf>central</mirrorOf>所在的mirror仓库拦截(类似java重载 匹配更精确的)-->
<mirrorOf>*</mirrorOf>
<mirrorOf>central</mirrorOf>
4 建议配置方案
配置一个中央仓库的mirror仓库
配置一个repository仓库作为私服
5 上传jar包到repository仓库
- 1~4的配置仅对下载jar包有效,对上传jar包无效
- 上传的配置需要配置在项目的pom.xml中(在父pom中配置即可)
- 标签配置在project标签下
<distributionManagement><!--指定release版本的jar包上传地址--><repository> <id>mydeployrepo1</id> <name>xxx</name> <url>http://xxxxx.xxx.x/xxx</url> </repository><!--指定snapshot版本的jar包上传地址--> <snapshotRepository> <id>mydeployrepo2</id> <name>xxx</name> <url>http://x.xx.xxx.xxxxx/xxx</url> </snapshotRepository>
</distributionManagement>
6 上传jar包一般需要账号密码
- 密码配置(配置在settings.xml中)
<servers><server><!--上传jar包需要账号密码时会根据id获取,因此要保证上传地址的id与密码的id一致--><id>mydeployrepo1</id><username>myaccountxx</username><password>xxx</password></server><server><id>mydeployrepo2</id><username>myxxaccount</username><password>xxxxx</password></server>
</servers>
7 其他注意事项
- 以上的这些配置中id标签必须配置
- 以上的这些配置中name标签可以不配置(类似备注信息,没有太大作用)
8 待整理杂项
maven中央仓库
https://repo.maven.apache.org/maven2/ (默认使用)
https://repo1.maven.org/maven2/
阿里云仓库
https://maven.aliyun.com/repository/public
https://maven.aliyun.com/nexus/content/groups/public/
华为云仓库
https://repo.huaweicloud.com/repository/maven/
https://mirrors.huaweicloud.com/repository/maven/
腾讯云仓库
http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
清华大学仓库
https://repo.maven.apache.org/maven2/
runtime---------mysql-connection-java.jar
complie阶段不可参与、test阶段可参与、package阶段可参与、运行时参与
provided----------servlet-api.jar
complie阶段可参与、test阶段可参与、package阶段不可参与、运行时参与
test-------------junit.jar
complie阶段不可参与、test阶段可参与、package阶段不可参与、运行时不参与