使用Nexus搭建maven私服
一、私服简介
私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
二、使用私服的好处
1、jar包下载速度比中央仓库快
2、有些jar包由于版权原因,maven中央仓库没有,比如oracle JDBC驱动。另外也会有一些项目中用到的比较老的开源jar包,中央仓库也没用
3、公司自己开发的jar包并不开源,不能上传到maven中央仓库,只能部署到私服上面
4、便于进行统一jar包管理
5、可在此基础上搭建自动化部署服务器:
1)Maven构建和释放项目;
2)SubVersion源代码库,管理源代码;
3)远程存储库管理器(Jfrog/ Nexus)来管理项目的二进制文件。
三、3种Maven仓库管理软件
1、Apache的Archiva
2、JFrog的Artifactory
3、Sonatype的Nexus(本文将使用)
四、Nexus使用:(默认jdk和maven已经成功安装)
1、下载Nexus
下载地址:https://www.sonatype.com/download-oss-sonatype
我安装的是nexus-2.14.0-01-bundle.zip
2、安装Nexus
将下载的文件解压到一个英文目录下,然后进入bin目录,我的为F:\nexus-2.14.0-01-bundle\nexus-2.14.0-01\bin\jsw\windows-x86-32,看到如下图:
1)修改启动端口:默认8081,若未被占用则可不更改
2)再转到jswàconf目录,找到wrapper.conf,修改本机安装的jdk路径
3)以管理员身份运行install-nexus.bat
4)以管理员身份运行start-nexus.bat,至此,nexus已经安装启动完成
3、可视化界面
1)浏览器打开http://localhost:8081/nexus/
2)右上角login in ,输入用户名:admin,密码:admin123(默认管理员初始用户名密码)
3)左侧点击Repository显示如下图所示
4)nexus仓库分类
- hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件;
- proxy 代理仓库:代理公共的远程仓库;
- virtual 虚拟仓库:用于适配 Maven 1;
- group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。
4、配置maven的代理服务器
注:此步骤的前提是你的电脑不能连接外网,如果可以上外网,这里也没有意思,只是介绍一下, 在左侧菜单找到如图:
点击查看右边有很多选项,找到这里
添加你的代理服务器就可以了。
5、上传非开源或者自己的jar包到宿主库
我们目前只是用3rd party这个第三方的功能,将maven仓库中没有构件的jar包上传到服务器。如何将第三方的jar上传到nexus上面呢?如下:举例上传oracle的驱动包。
【注意:3rd party、Snapshots、Releases这三个,分别用来保存第三方jar(典型的oracle数据库的jar驱动包),项目组内部的快照、项目组内部的发布版。】
6、获取私服上的Maven构件
那么现在nexus已经安装好,也清楚了怎么上传自己的jar包,下面来看下如何获取Maven构件:
1)建立了一个maven的项目。
2)先去服务器看看jar的maven构件
3)然后在pom.xml中添加如下的本地仓库地址:
7、设置代理仓库(仓库组)
1)选择Central仓库点击下边的Configuration把Download Remote Indexes属性设为True保存
2)在Central仓库上右键然后点击Repair Index 即可下载中心仓库的索引文件,稍等几分钟点击下边的Browse Index即可看见下载的索引文件。
3)往Public Repositories中添加Central仓库,点击Public
Repositories在Configuration选项卡中把Central移到左侧
8、项目中使用maven私服的两种方式
1)配置在本地maven的setting.xml中,则对于本地所有的maven项目生效
<mirrors>
<mirror>
<id>nexus-releases</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
<mirrors>
2)配置在项目的pom.xml中,只针对当前项目有效
<repositories>
<repository>
<id>nexus</id>
<name>nexus Repository</name> <url>http://localhost:8081/nexus/content/groups/public/</url>
</repository>
</repositories>
3)测试结果