什么是Nexus

Nexus是一个强大的Maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。

运行原理

本地仓库与私服处在同一个局域网中,当本地仓库没有资源时,会向私服发起请求获取资源(同一个局域网,下载网速快)。如果私服上没有资源,再向远程仓库下载资源。
当开发人员开发项目时,已经将所有依赖的资源通过私服下载下来后,有新同事来了,只需要将maven配置连接到私服,就不需要从远程仓库下载,从而节约了宽带和下载时间。

在本地构建nexus私服的好处

1)加速构建;
2)节省带宽;
3)节省中央maven仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库

测试环境:一台IP为192.168.2.20的虚拟机

一、下载文件并解压

tar -zxvf nexus-3.3.2-02-unix.tar.gz

二、修改配置文件

vim nexus-3.3.2-02/etc/nexus-default.properties
application-port=8081
application-host=192.168.2.20
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/nexus # Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
vim nexus-3.3.2-02/bin/nexus.rc
run_as_user=root

三、启动

nexus-3.3.2-02/bin/nexus start

访问http://192.168.2.20:8081/nexus
安装成功后有两个默认账号admin、anonymous,其中admin具有全部权限默认密码admin123;anonymous作为匿名用户,只具有查看权限。

四、Nexus配置说明

点击【Browse】下的【Components】,如图

1.maven库名称说明

1)maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
2)maven-releases:私库发行版jar
3)maven-snapshots:私库快照(调试版本)jar
4)maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

2.maven库类型说明

1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库
2)hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库)
3)proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径)
4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用)

五、连接私服(从nexus服务器上下载jar资源)

修改maven的setting.xml文件

<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
<!-- 表示maven从指定的url服务器中获取jar资源 -->
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.2.20:8081/nexus/repository/maven-public/</url>
</mirror>
之后在项目中的pom.xml中添加jar包依赖,如果本地仓库没有该jar包资源,那么maven就会请求到nexus服务器获取jar包。

六、发布项目(将本地jar包上传到nexus中)

修改maven的setting.xml文件,添加以下配置:

<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server> <server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>

修改项目中pom.xml文件配置

<repositories>
<repository>
<id>maven-central</id>
<name>maven-central</name>
<url>http://192.168.2.20:8081/nexus/repository/maven-central/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<distributionManagement>
<snapshotRepository>
<id>snapshots</id>
<name>Nexus Snapshots</name>
<url>http://192.168.2.20:8081/nexus/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>releases</id>
<name>Nexus releases</name>
<url>http://192.168.2.20:8081/nexus/repository/maven-releases/</url>
</repository>
</distributionManagement>
注意:上边的id值需要与setting.xml文件中的id值一致
如果要发布SNAPSHOT版本,项目version的值加上-SNAPSHOT,jar包会发布到maven-snapshots
如果要发布RELEASES版本,去掉项目中version的SNAPSHOT,jar包会发布到maven-releases
本次测试以发布SNAPSHOT版本为例:





Nexus搭建私服的更多相关文章

  1. Nexus搭建私服 学习

    为什么要搭建nexus私服 因为有些公司不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以,有必要再局域网里找一台有外网权限的机器.搭建nexus私服,然后开发人员连接到这台私服 ...

  2. 使用 Nexus 搭建私服仓库时我犯的一个小错误

    私服搭建好,啥都配置好了,纳闷的是 Repositories 中的 group 为何总是空值?我还反反复复删了又重建,结果还是一样,不经意间再看 Configuration 选项卡的内容,发现左右两个 ...

  3. Maven学习 (四) 使用Nexus搭建Maven私服

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  4. Maven-004-使用 Nexus 搭建 maven 私服

    从去年至今,自己一直在学习自动化测试工具,想利用自动化工具尽可能的将重复的.关键的.耗时耗力的工作实现自动化,减轻日常测试工作,提升测试效率.在学习的过程中,将 maven 作为了项目开发管理工具,进 ...

  5. Maven使用笔记(五)Sonatype Nexus 搭建Maven 私服

    1. 为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地, 而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载 ...

  6. Maven——使用Nexus搭建Maven私服

    原文:http://www.cnblogs.com/xdp-gacl/p/4068967.html Maven学习总结(九)--使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要 ...

  7. 使用nexus搭建maven仓库(本地私服)

    我们在使用maven的时候,对于项目所依赖的jar包,maven默认会在中央仓库下载jar包,到本地的磁盘目录(如果没有配置则是用户目录下/.m2/repository文件夹下).如果公司内部搭了一个 ...

  8. Maven入门指南⑤:使用Nexus搭建Maven私服

    1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部 ...

  9. centos7搭建nexus maven私服

    前置条件: 1.安装jdk,可参考 http://www.cnblogs.com/grey-wolf/p/6480489.html 2.nexus仓库管理器,分为两个版本,Nexus Reposito ...

随机推荐

  1. poj-3046-dp

    Ant Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6829   Accepted: 2514 Desc ...

  2. HDU 4274 Spy's Work (树形DP)

    题意 给定一棵树,给出一些子树的权值关系,问是否矛盾(初始所有结点的下限为1) 思路 设lmin和lmax表示题目给定的限制范围,默认为[1..oo]:amin和amax表示实际符合要求的范围.从根节 ...

  3. JavaScript---循环与闭包

    循环与闭包 先看一个demo <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  4. C++:tinyxml的使用

    1. 简介 TinyXML2(最新版本)是一个开源的功能齐全的XML解析库 For C++,源码见:github. 2. 开始使用 首先从Github上获得源码,是一个完整的演示工程,我们只需要其中的 ...

  5. laravel中的validator()类验证的使用

  6. C#学习历程(四)[实际问题]

    >>无法直接启动带有”类库输出类型”的项目 在编辑界面的右侧会出现[解决方案资源管理器],里面显示我们的程序项目和所有代码文件. 右键点击项目,在右键菜单中选择[属性] 一般导致该问题都是 ...

  7. vue的v-model绑定数据问题

    在我的项目中有一个这样的功能模块: 我们修改数据全是在前台的table中修改,然后把这个table的值带到后台.(理想:修改值后,点击确认值改变,点击取消值恢复原来的值)那么问题就来了: a)你修改值 ...

  8. js 倒计时 时间戳

    功能:传入一个截止时间(unix时间戳),显示倒计时 因为unix时间戳,并不等于js 的new Date().getTime()得到的那一串毫秒数,所以要在JS中使用unix时间戳,必须先转换一下u ...

  9. LaTex中插入大括号的多行公式

    由于近期要发表论文,不得不恶补LaTex.现在需要插入带大括号的多行公式,效果如下: LaTex编辑如下: \begin{equation} \label{eq6} [x_{i}]=\left\{ \ ...

  10. Java Double 精度问题总结

    package Demo_1.Test_2; import java.math.BigDecimal; /** * @描述:Java Double 精度问题总结 * @详细描述:使用Java,doub ...