1:Nexus(maven私服)作用
是种特殊的Maven仓库一般用于公司,比如三十个员工开发一个项目,需要每个人都联网去下载jar,每个人都很痛苦。此时公司可以搭建一个私服,让其中一人去私服下载jar,这样私服中就缓存了那些jar包,其他人在下载的时候就无需重新从远程仓库下载了,直接从私服缓存的地方拿下来即可。还有一种情况,当某个开发人员封装好某个工具jar以后,可以直接上传到私服,其余的开发人员可以直接缓存下来用。
2:安装
1:这是nexus的官网地址,https://www.sonatype.com/download-nexus-repo-oss?submissionGuid=e225567e-4323-4049-870c-478afc2a7bfe 。测试过了,表示根本无法下载,不知道是我网速原因还是因为外网的关系,我也是在网上找别的兄弟上传的资源:https://pan.baidu.com/s/1U-ehXu0YHGvsF3gbKBOrUg 提取码:x2N9 。
2:下载到本地后,解压后如图:
根据自己的系统选择相应的版本运行,运行install-nexus.bat 在系统中注册服务,注册后可以通过start-nexus.bat/stop-nexus.bat 开启服务和关闭服务。也可以在系统服务中开启关闭服务
启动成功后打开浏览器输入:http://localhost:8081/nexus 默认账号和密码:用户名:admin 密码:admin123
3:使用教程
1:如果是内网开发,那么需要给nexus设置代理,在Administration-->Server中进行配置 :
:
2:如果可以访问外网,跳过上面一步。下一步:配置repository
3:nexus里可以配置3种类型的仓库,分别是proxy、hosted、group
proxy是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用 。
hosted是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里。
group是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了 。
4:配置Central Repository的proxy
最关键的一个配置,可能就是Central Repository的proxy配置,因为大部分的构件,都是要通过这个proxy得到的
在安装完nexus之后,这个proxy是预置的,需要做的就是把Download Remote Indexes改为true,这样nexus才会从central repository下载索引,才能在nexus中使用artifact search的功能 。
网络上有一些其他公开的maven仓库,可以用同样的办法,在nexus中设置proxy,但是并不是所有maven仓库,都提供了nexus index,这种情况下,就无法建立索引了 。
5:配置hosted repository
一般会配置3个hosted repository,分别是3rd party、Snapshots、Releases,分别用来保存第三方jar(典型的比如ojdbc6.jar),项目组内部的快照、项目组内部的发布版
这里并没有什么特别的配置,只是Deployment Policy这个选项,一般Snapshots会配置成允许,而Releases和3rd party会设置为禁止 。
6:配置group repository
前面说过,group其实是一个虚拟的仓库,通过对实体仓库(proxy、hosted)进行聚合,对外暴露一个统一的地址
这里要注意的是,放到左边的仓库,才是会被聚合的仓库。我昨天一直搞错了,把仓库都放到右边,结果group什么都没有聚合到,是一个空的仓库。。。
7:配置用户密码
在Security-->Users中配置,在deployment用户上点击右键,选择Set Password,然后设置一个密码,做这个操作是为了后面提交做准备
8:在用户机器上配置settings.xml
经过前面的7个步骤,nexus就配置好了,接下来需要在每个开发人员的开发机器上进行配置了 。去你的maven仓库中conf文件夹下的setting文件增加server、mirror两块代码即可
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>nexus-snapshots</id>
<username>deployment</username>
<password>deployment</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>