Maven-004-使用 Nexus 搭建 maven 私服
从去年至今,自己一直在学习自动化测试工具,想利用自动化工具尽可能的将重复的、关键的、耗时耗力的工作实现自动化,减轻日常测试工作,提升测试效率。在学习的过程中,将 maven 作为了项目开发管理工具,进行分模块开发。初始的时候,自己一个人想怎么搞就怎么搞。。。之前给同时做了分享,并引入公司,大家一起努力去完善系统。悲剧的是,最近公司限网,从 maven 中央仓库下载所需的 jar 包,需要外网的支持,而使用相同的 jar 时,每人均重复下载浪费网络资源,并且也影响项目构建的速度,因而想构建一个公司的 maven 私服解决这一问题,咨询了一下度娘、谷大爷决定选择 nexus 搭建 maven 私服。
一、下载安装
点击 Nexus 下载,下载 Nexus,此处下载版本为:nexus-2.12.0-01-bundle.zip,文件内容如下所示:
nexus-2.12.0-01:为nexus应用目录。
sonatype-work:为 nexus 默认的存储目录。
二、启动
将下载的 zip 文件解压到本地目录,并进入目录 nexus-2.12.0-01\bin,打开命令行窗口执行 nexus.bat install 命令,安装系统服务 nexus。
无需进入 nexus-2.12.0-01\bin\jsw 目录选择对应的系统版本安装启动,因为在启动脚本 nexus.bat/nexus 中已经做出了相应的处理,会依系统启动对应的 nexus 版本。
安装成功后,系统服务中会存在 nexus 的服务,如下所示:
可在服务中启动 nexus,也可在命令行中执行 nexus.bat start 命令,启动 nexus。若出现如下信息,则说明 nexus 启动成功。
打开浏览器,输入:http://localhost:8081/nexus 即可访问 nexus,如下所示:
nexus 配置文件为:nexus-2.12.0-01\conf\nexus.properties,可通过修改配置文件,修改其对应的端口、工作目录等信息,修改后重启服务接口。
# Sonatype Nexus
# ==============
# This is the most basic configuration of Nexus.
# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus
# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF
点击 nexus 欢迎页面右上角的 【Log In】按钮,输入用户名、密码登录系统(系统默认的管理员账号/密码为:admin/admin123),登录后点击导航栏的【Repositories】链接,查看 nexus 内置仓库,如下图示所示:
内置仓库:
【Public Repositories】:仓库组,默认内置。
【3rd party】:宿主仓库,用来部署无法从公共仓库获得的第三方发布版本构件,策略Release。
【Apache Snapshots】:代理仓库,用来代理Apache Maven仓库的快照版本,策略为Snapshot,不可发布。
【Central】:代理仓库,默认代理maven中央仓库,策略为Release,只会下载和缓存中央仓库的发布版本构件。不可发布。
【Releases】:宿主仓库,用来部署组织内部的发布版本构建,策略为Release。
【Snapshots】:宿主仓库,用来部署组织内部的快照版本构建,策略为Snapshot。
三、配置
Central 代理仓库开启远程索引下载:
点击左侧导航栏【Scheduled Tasks】连接,可查看进度,如下所示:
更新完成后,即可在左侧导航栏【Artifact Search】搜索所需要的构件,如下所示:
设置 Release 可重复发布部署构件:
配置 maven 从 Nexus 下载构件:
在 maven 的 setting.xml 文件的 profiles 节点下添加如下配置:
<settings>
...
<profiles>
<!-- 配置 maven 从私服下载构件 -->
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
...
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
配置中使用了一个 id 为 nexus 的profile,这个 profile 包含了相关的仓库配置(配置了 nexus 的 groups 仓库组),同时配置中使用了 activeProfile 元素将 nexus 这个 profile 激活。当执行 maven 构建的时候,激活的 profile 会将仓库配置应用到项目中。
maven 除了从 Nexus 中下载构件外,还会不时的访问中央仓库 central,如何使 maven 所有下载请求都仅仅通过 nexus,以全面发挥 nexus 私服的作用?可通过配置 maven 的镜像实现。通过创建一个匹配任何仓库的镜像地址为私服,即可将 maven 对任何仓库的构件下载请求都会转到 nexus 私服中,具体配置如下所示:
<settings>
...
<mirrors>
<!-- 配置 maven 所有下载请求仅仅通过 nexus -->
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Nexus - Maven</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</mirror>
</mirrors>
<profiles>
<!-- 配置 maven 从私服下载构件 -->
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enable>true</enable>
</releases>
<snapshots>
<enable>true</enable>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enable>true</enable>
</releases>
<snapshots>
<enable>true</enable>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
...
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
上述配置中,仓库及插件仓库的 id 均为 central,也就是说覆盖了超级 POM 中央仓库的配置,此时 url 已经无关紧要,因为此时所有请求都会通过镜像访问 nexus 私服地址。配置仓库及插件仓库的主要目的是开启对快照版本下载的支持,当 maven 需要下载发布版或快照版构件的时候,首先会检查 central,查看该类型的构件是否支持,然后根据镜像匹配规则转而访问 nexus 私服仓库地址。
至此, Maven-004-使用 Nexus 搭建 maven 私服 顺利完结,希望此文能够给初学 Maven 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
欢迎 【 留言 || 关注 || 打赏 】 。您的每一份心意都是对我的鼓励和支持!非常感谢!欢迎互加,相互交流学习!
作者:范丰平,本文链接:https://www.cnblogs.com/fengpingfan/p/5192738.html
Copyright @范丰平 版权所有,如需转载请标明本文原始链接出处,严禁商业用途! 我的个人博客链接地址:http://www.cnblogs.com/fengpingfan