Nexus 作为最流行的 Maven 私服之一,使用它主要目的之一:代理远程仓库,即当 Maven 需要下载构件到本地仓库使用时,不再请求外部的远程仓库,而直接从 Nexus 中下载。本节我们将介绍如何配置 Maven 从 Nexus 下载构件。
将 Nexus 的代理仓库配置到 Maven 项目中,用它们代替外部的远程仓库,即可实现 Maven 从 Nexus 下载构件。
<!--声明一个或多个远程仓库 --> <repositories> <!-- 声明一个 Nexus 私服上的仓库 --> <repository> <!--仓库id --> <id>nexus</id> <!-- 仓库的名称 --> <name>nexus</name> <!--仓库的地址 --> <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url> <!-- 是否开启该仓库的 release 版本下载支持 --> <releases> <enabled>true</enabled> </releases> <!-- 是否开启该仓库的 snapshot 版本下载支持 --> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <!-- 声明一个或多个远程插件仓库 --> <pluginRepositories> <!--声明一个 Nexus 私服上的插件仓库 --> <pluginRepository> <!--插件仓库 id --> <id>nexus</id> <!--插件仓库 名称 --> <name>nexus</name> <!-- 配置的插件仓库的地址 --> <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url> <!-- 是否开启该插件仓库的 release 版本下载支持 --> <releases> <enabled>true</enabled> </releases> <!-- 是否开启该插件仓库的 snapshot 版本下载支持 --> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories>
子元素 | 含义 |
---|---|
id | 仓库的唯一标识。需要注意的是,Maven 中央仓库的 id 为 central,如果其他的仓库也使用该 id,就会覆盖中央仓库的配置。 |
name | 仓库的名称。 |
url | 仓库的地址,该地址一般都是基于 HTTP 协议的,通过浏览器即可访问该地址,浏览仓库中的构件。 |
releases/snapshots | 用来控制 Maven 对于发布和快照版本构件的下载。它们都有一个 enabled 子元素,enabled 的取值为 true,表示开启发布版或快照版的下载支持,否则表示关闭下载支持。 |
mvn clean install
图1: 使用 Nexus 私服构建结果
<profiles> <profile> <id>nexus</id> <!--声明一个或多个远程仓库 --> <repositories> <!-- 声明一个 Nexus 私服上的仓库 --> <repository> <!--仓库id --> <id>nexus</id> <!-- 仓库的名称 --> <name>nexus</name> <!--仓库的地址 --> <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url> <!-- 是否开启该仓库的 release 版本下载支持 --> <releases> <enabled>true</enabled> </releases> <!-- 是否开启该仓库的 snapshot 版本下载支持 --> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <!-- 声明一个或多个远程插件仓库 --> <pluginRepositories> <!--声明一个 Nexus 私服上的插件仓库 --> <pluginRepository> <!--插件仓库 id --> <id>nexus</id> <!--插件仓库 名称 --> <name>nexus</name> <!-- 配置的插件仓库的地址 --> <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url> <!-- 是否开启该插件仓库的 release 版本下载支持 --> <releases> <enabled>true</enabled> </releases> <!-- 是否开启该插件仓库的 snapshot 版本下载支持 --> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>以上配置中使用了一个 id 为 nexus 的 profile,这个 profile 中包含了与仓库相关的配置,同时配置中还使用了一个 activeProfiles 元素将 id 为 nexus 的 profile 激活。当本机有 Maven 项目构建时,profile 中的仓库配置就会应用到项目中。
mvn clean install
图2:Nexus 全局配置仓库
<mirrors> <mirror> <id>nexus</id> <name>nexus name</name> <mirrorOf>*</mirrorOf> <url>http://localhost:8082/nexus/content/groups/bianchengbang_repository_group/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>
仓库和插件仓库的配置中,它们的 id 取值都是 central,即它们的设置覆盖了 Maven 中央仓库,但此时这里的 URL 已经无法起到任何作用,因为镜像的匹配规则是 *,所有的请求都已经被拦截,跳转到 Nexus 私服的地址。
本文链接:http://task.lmcjl.com/news/15543.html