前言:
本文是关于maven nexus私服的总结,至于maven的基础知识和在Myeclipse环境下整合ssm项目,可查看:http://blog.csdn.net/huangchongwen/article/details/79302517
一 首先解决一个疑问,为什么需要搭建私服?
公司一般都有个自己的私服来管理各种jar包,原因大概有这么4个,分别是:
1、有的公司不能访问外网,只能通过私服来管理jar包和插件;
2、公司网速比较慢,通过公司的私服来获取jar包比较快;
3、内部的的一些jar包或者第三方jar(如驱动类的jar)放在私服上,比较方便的大家使用。
4、公司内部同一IP地址高并发访问中心仓库容易被认为恶性访问。
二 nexus下载和启动
下载地址 http://www.sonatype.org/nexus/go
这个下载下来后是绿色版的(不需要安装,直接解压即可),进入bin/jsw/选择你系统的版本/console-nexus.bat,运行http://127.0.0.1:8081/nexus/
进去之后:
三 仓库介绍
第一类: Host仓库 , 也叫宿主仓库。
里面有个: Releases 是发行仓库 ,一般存放公司内部的jar文件,是发行版本
Snapshots 是镜像版本,也就是测试版本。
3rd party 为第三方仓库,存放的是第三方jar包,可能在中心仓库中是找不到的
第二类 :代理仓库
中心仓库的代理仓库 central: 没有的jar包,通过这个代理仓库去中心仓库下载(到该仓库)
第三类 组仓库:public 虚拟仓库
- - - 有点像仓库的索引;
我们打开组仓库,如下图,仓库组主要作用jar下载时, 依次访问里面配置的仓库组
四: maven项目的jar下载(依赖)顺序
五: maven关联私服(从私服下载jar,而不是直接找中心仓库)
修改配置文件:
pom.xml
<repositories>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>public</id>
<name>public</name>
<url>http://127.0.0.1:8081/nexus-2.6.2/content/groups/public/</url>
</repository>
</repositories>
<!-- 加载的是maven生命周期插件的jar包 -->
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>public</id>
<name>public</name>
<url>http://127.0.0.1:8081/nexus-2.6.2/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
本来配置的是"中心仓库",现在改为私服中"仓库组"URL即可,如上图依次在私服中找jar包,假如找不到,就去找中心仓库。
我们看看"中心代理仓库"的配置,Remote Storage Location:https://repo1.maven.org/maven2/ 正是中心仓库地址
六 jar上传
第一种方式:
手动上传一个jar到3rd party仓库里面。 这里来个mysql驱动包
刷新之后可以看到:
第二种方式:
通过Myeclipse快捷键或者mvn deploy将jar包发布到仓库中。
pom.xml
<distributionManagement>
<!-- 发布到 快照版本的仓库,即 测试版本仓库 -->
<snapshotRepository>
<id>snapshots</id>
<url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url>
</snapshotRepository>
<!-- 发布到 发行版本的仓库中,也可以发布到3rd party 仓库 -->
<repository>
<id>releases</id>
<url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url>
</repository>
</distributionManagement>
注意:必须指定相关仓库的id和URL, 具体参数可以查看nexus中对应仓库。
发布到快照版本的仓库,同时指定id和URL即可;
<!-- 发布到 快照版本的仓库,即 测试版本仓库 -->
<snapshotRepository>
<id>snapshots</id>
<url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url>
</snapshotRepository>
思考一下: 单单这样可以吗? 我们从私服上下载jar不需要登录(获取相关权限),但是上传也不需要吗?我们想想中心仓库就知道一切了。我们还需要修改本地仓库的setting.xml,加上如下代码来获取权限。
之后我们可以在仓库组或者具体仓库中看到上传成功的jar包
==========================================================
最后: 祝学习愉快~