Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:
Nexus作用:
如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
1.安装jdk
ps:不会的同学请参考 https://blog.csdn.net/qq_38743494/article/details/86101356 这篇博客进行学习
2.安装Nexus
2.1.进入local下:
cd /usr/local
2.2.创建文件夹:
mkdir nexus
2.3.切换目录:
cd /usr/local/software
2.4.下载Nexus:
wget "https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.3-02-bundle.tar.gz"
2.5.解压文件:
tar -zxvf nexus-2.14.3-02-bundle.tar.gz -C /usr/local/nexus
解压之后就会看见两个目录:
nexus-2.11.4-01:里面是nexus的运行环境和应用程序。
sonatype-work:里面是我们后面要对nexus进行一些配置的地方,像索引和起始的仓库和端口等都可以在这里面配置。
2.6配置环境变量
vim /etc/profile
添加export RUN_AS_USER=root,如果这里不配置,启动时会出现 If you insist running as root ,than set the environment variable RUN_AS_USER=root before running this script 报错
刷新环境变量
source /etc/profile
2.7.启动Nexus
cd /usr/local/nexus/nexus-2.14.3-02/bin/nexus start
2.8.访问页面
默认地址:http://127.0.0.1:8081/nexus
点击右上角Log In进行登录,默认帐号:admin、密码:admin123
3.Nexus初始化
3.1、Nexus整体介绍
&nsp; 我们可以从上图中看到四种仓库类型:group(仓库组)、hosted(宿主)、proxy(代理)和virtual(虚拟)。其中每种类型的Format有Maven1或者Maven2,这里我们不看Maven1的。仓库的Policy(策略)表示该仓库为发布(Release)版本还是快照(Snapshot)版本仓库。
在图中,Nexus列出了默认的几个仓库:
Public Repositories:仓库组,将所有策略为Release的仓库聚合并通过一致的地址提供服务。
3rd party:一个策略为Release的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件。
Apache Snapshots:策略为Snapshots的代理仓库,用来代理Apache Maven仓库的快照版本构件。
Central:该仓库代理Maven的中央仓库,策略为Release,只会下载和缓存中央仓库中的发布版本构件。
Central M1 shadow:maven1格式的虚拟类型仓库。
Codehaus Snapshots:代理Codehaus Maven仓库快照版本的代理仓库。
Release:策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件。
Snapshots:策略为Snapshots的宿主类型仓库,用来部署组织内部的快照版本构件。
3. 2、点击左侧Repositories项 -> central仓库 -> Configuration -> Download Remote Indexes=True -> Save,表示下载远程仓库的索引。
同时override local storage location 也是可以改一下。
点击“save”。
点击左边的“Administration”->“Scheduled Tasks"链接,如果没有出现“Update Repositories Index”处于Running状态,那么需要在Public Repositories行右击,点击"Update Index”。
然后再点击Schedule Tasks就可以看到有任务处于Running状态了。
等到索引下载完成之后,就可以在"Repositories"界面中,选择Browser Index选项卡,可以看到Maven中央仓库内容的树形结构.
3.3.手动上传jar包
第一步:GAV Definition:选择GAV Parameters
第二步:输入JAR包对应的:Group\Artifact\verison
第三步: 选择JAR
第四步:上传包,第四步add artifact 最后update artifact.
这样包上传成功。POM可以用了。
3.4Maven配置
在Maven安装目录conf/setting.xml 在内配置如下内容
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
3.5.部署构建到私服
我们在实际开发过程是多个人的,那么总有一些公共模块或者说第三方构件是无法从Maven中央库下载的。我们需要将这些构件部署到私服上,供其他开发人员下载。用户除了通过界面手动上传构件,也可以配置Maven自动部署构件至Nexus的宿主仓库。
使用Maven部署构件到Nexus私服上日常开发的快照版本部署到Nexus中策略为Snapshot的宿主仓库中,正式项目部署到策略为Release的宿主仓库中,POM的配置方式如下:
<!-- 配置远程发布到私服,mvn deploy -->
<distributionManagement>
<repository>
<id>releases</id>
<name> Nexus Release Repository </name>
<url> http://127.0.0.1:8081/nexus/content/repositories/releases/ </url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name> Nexus Snapshot Repository </name>
<url> http://127.0.0.1:8081/nexus/content/repositories/snapshots/ </url>
</snapshotRepository >
</distributionManagement >
Nexus的仓库对于匿名用户只是只读的。为了能够部署构件,我们还需要再settings.xml中配置验证信息:
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
其中,验证信息中service的id应该与POM中repository的id一致。
(看不懂的同学加我QQ:651023907)