Maven镜像,私服配置
约 1138 字大约 4 分钟
2024-11-08
仓库的搜索优先级:
本地仓库 > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central
1. 常用Maven地址
1.1. 阿里云
<mirror>
<!-- https://developer.aliyun.com/mvn/guide -->
<id>ali-yun</id>
<name>阿里云 maven</name>
<!-- *:覆盖所有仓库;central:中央仓库-->
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
1.2. 华为云
<mirror>
<id>huawei-yun</id>
<name>华为云 maven</name>
<!-- *:覆盖所有仓库;central:中央仓库-->
<mirrorOf>central</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
1.3. 腾讯云
<mirror>
<id>tencent-yun</id>
<mirrorOf>central</mirrorOf>
<!-- *:覆盖所有仓库;central:中央仓库-->
<mirrorOf>central</mirrorOf>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
1.4. Spring官方
https://repo.spring.io/release/ (正式发布版本)
https://repo.spring.io/milestone/ (里程碑版本)
https://repo.spring.io/snapshot/ (快照版本)
用途: 提供Spring框架及其相关项目的依赖。
特点: 包含Spring的最新版本和快照版本。
2. setting的mirrorOf作用
在Maven的settings.xml
文件中,<mirrors>
元素用于定义镜像服务器,这些镜像服务器可以替代默认的中央仓库或其他远程仓库。<mirrorOf>
属性用于指定哪些仓库可以被这个镜像替代。 mirrorOf 属性指定了哪些仓库可以被当前定义的镜像替代。可以使用通配符来匹配多个仓库。
常见的 mirrorOf 值:
*
:匹配所有仓库。external:*
:匹配所有远程仓库(即不在本地网络中的仓库)。central
:仅匹配中央仓库。repo1_id,repo2_id
:匹配特定的仓库 repo1_id 和 repo2_id。*,!repo1
:匹配所有仓库,但排除 repo1_id。
<!--在这个示例中,mirror1 替代 repo1 和 repo2,而 mirror2 替代所有其他仓库,但不包括 repo1-->
<settings>
<mirrors>
<mirror>
<id>mirror1</id>
<url>https://mirror1.example.com/maven2</url>
<mirrorOf>repo1,repo2</mirrorOf>
</mirror>
<mirror>
<id>mirror2</id>
<url>https://mirror2.example.com/maven2</url>
<mirrorOf>*,!repo1</mirrorOf>
</mirror>
</mirrors>
</settings>
如果有多个镜像匹配同一个仓库,Maven 会按 <mirrors>
列表中的顺序选择第一个匹配的镜像。 通过合理配置 mirrorOf 属性,可以优化 Maven 的依赖下载速度,减少对外部网络的依赖
3. Maven配置
- Maven 不支持多镜像负载均衡。可通过 指定镜像覆盖范围。
- 验证依赖拉取来源(-X为参数输出调试日志):
mvn clean install -X
- 如果setting配置为 (匹配所有仓库),所有依赖请求会被强制重定向到当前mirror,即使pom.xml中定义了其他仓库
3.1. Maven Setting配置
<mirror>
<!-- https://developer.aliyun.com/mvn/guide -->
<id>ali-yun</id>
<name>阿里云 maven</name>
<!-- *:覆盖所有仓库;central:中央仓库-->
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
3.2. 项目pom指定
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<layout>default</layout>
<!-- 是否开启发布版构件下载 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否开启快照版构件下载 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
4. 私服上传
4.1. pom配置私服地址
<!--上传私服 配置-->
<distributionManagement>
<repository>
<!--id的名字可以任意取,但是在setting文件中的属性<server>的ID与这里一致-->
<id>local-releases</id>
<!--name只是标识作用,无实际作用-->
<name>nexus Repository RELEASES</name>
<!--指向仓库类型为host(宿主仓库)的储存类型为Release的仓库-->
<url>http://192.168.244.130:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>local-snapshots</id>
<name>nexus Repository SNAPSHOTS</name>
<url>http://192.168.244.130:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
4.2. Maven settings 配置
- setting配置文件默认路径(windows):
C:\Users\用户名\.m2\settings.xml
- 指定本地maven仓库路径:
<!-- 指定私服的密码: -->
<servers>
<server>
<!--对应pom.xml的distributionManagement.id=releases的仓库-->
<id>local-releases</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<!--对应pom.xml的distributionManagement.id=releases的仓库-->
<id>local-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
根据pom文件中设置的上传到不同仓库
- 带有【-SNAPSHOT】会上传到 snapshotRepository 仓库
- 其余的会上传到 repository 仓库
5. 私服下载
两种任选其一:
5.1. pom配置
<!--从私服下载-->
<repositories>
<repository>
<id>maven-public</id> <!-- 这里的ID为maven仓库的name -->
<name>local Repository</name> <!-- 这里的name 只是标识作用,随意取 -->
<url>http://192.168.244.130:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-public</id> <!-- 这里的ID为maven仓库的name -->
<name>local Repository</name> <!-- 这里的name 只是标识作用,随意取 -->
<url>http://192.168.244.130:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
5.2. Maven settings配置
<mirrors>
<!-- 仓库地址1 -->
<!-- 这里的ID为maven仓库的name -->
<mirror>
<id>maven-public</id>
<name>名字不重要,id很重要</name>
<mirrorOf>*</mirrorOf>
<url>http://192.168.244.130:8081/repository/maven-public/</url>
</mirror>
<!-- 仓库地址2 -->
<mirror>
<id>wshoto-nexus</id>
<url>http://111.229.217.171:7081/nexus/repository/maven-public/</url>
<mirrorOf>!maven-public,*</mirrorOf>
</mirror>
</mirrors>