maven 仓库配置
Maven 仓库分类
-
本地仓库
默认在本机每个用户目录下的仓库,地址为 .m2/repository/,从远程仓库下载的 jar 都会保存在本地仓库中。 -
远程仓库
可以在项目的 pom.xml 文件和 maven 的配置文件 settings.xml 可以配置多个远程仓库。
例如:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
注意自定义的远程仓库 id 不能和默认的中央仓库重复,即不能为 central,否则会替换中央仓库。
- 中央仓库
maven 默认的中央仓库,但下载速度较慢,可以使用 mirrorOf 镜像标签替换为国内的阿里云仓库。
Maven 镜像
当远程仓库中没有想要的 jar 或者下载速度较慢时,可以考虑使用 mirrorOf 标签来进行远程仓库替换。配置 mirror 之后,将不会从被替换的 repository 仓库下载依赖。
mirrorOf 的替换规则:
external:* 不在本地仓库的文件才从该镜像获取
repo,repo1 远程仓库 repo 和 repo1 从该镜像获取
*,!repo1 所有远程仓库都从该镜像获取,除 repo1 远程仓库以外
* 所用远程仓库都从该镜像获取
注意不要轻易使用 * 进行替换,这将使得所有配置的远程仓库都失效
Maven私服
在商业环境,公司因网络安全,内部项目管理等原因,会自建局域网私服仓库,使用 Nexus repository manager 来进行搭建。
如果仅仅使用 私服 仓库和配置远程仓库是一样,私服仓库也是远程仓库的一种。例如:
<repositories>
<repository>
<id>maven-public</id>
<name>maven-public</name>
<url>http://nexus.local:32768/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
如果需要向私服仓库发布项目,则需要在 settings.xml 文件中配置用户名和密码:
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
在项目 pom.xml 中配置发布的私服仓库:
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>maven-releases</name>
<url>http://nexus.local:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>maven-snapshots</name>
<url>http://nexus.local:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
Maven 仓库优先级
- 本地仓库,即 .m2/repository/ 目录下;
- 私服(profile)
- 远程仓库(repository)及镜像(mirrorOf)
- 中央仓库(central)