Maven仓库概念
Maven仓库就是用来存储所有Maven共享构建的地方(所有开源项目jar包的存放地)。
使用者根据GAV坐标去仓库下载对应的构建(jar包):
构建(Jar包)一般存放的路径规则为: groupId /artifactId /version / artifactId -version.jar
Maven仓库的分类
1、本地仓库
默认是 ${user.home}/.m2/repository
我们可以通过复制setting.xml文件,指定我们本地仓库的地址
每个用户只有一个本地仓库
![这里写图片描述](//img-blog.csdn.net/20180317230713819?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2、远程仓库
* 中央仓库:Maven默认的远程仓库
http://repo1.maven.org/maven2
* 私服:是一种特殊的远程仓库,它是架设在本地局域网内的仓库
私服的作用:当团队成员进行开发时,每个人都要从中央仓库下载项目构建到本地仓库,费时费力,这个时候可以在局域网环境搭建一个私人仓库供团队使用,这就是MAVEN私服.
Maven私服Nexus
Nexus安装
Nexus其实就是一个JAVAWEB项目,安装nexus其实就是部署一个JAVA项目,它可以讲所有下载过的Maven项目构建在局域网内提供一个缓存,当其他成员通过nexus下载项目构建时,如果nexus本地缓存仓库存在此构建,则不用到远程仓库进行下载.
Nexus下载网站:https://www.sonatype.com/oss-thank-you-win64.zip
Nexus私服有两种部署方式
* nexus.zip 里面包含容器和项目 在dos窗口(在nexus-2.11.1-01/bin目录下),执行nexus -install,可以安装成系统服务的方式,每次开机会启动
* nexus.war 这里面只包含项目代码,相当于一个普通的java项目,可以部署到自己的tomcat,需要用到nexus的时候启动tomcat即可
安装版本:nexus-2.11.1-01-bundle.zip
注意:在安装之前,改一下配置文件(nexus-2.11.1-01/conf/nexus.properties),改项目的端口和项目的名称
默认的用户名是admin 密码是admin123
注意:在如下图所示路径的配置文件下代表了我们访问nexus项目的端口名和工程名,注意在安装前将端口修改为跟其他项目不冲突的端口.
![这里写图片描述](//img-blog.csdn.net/20180317231645826?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
Nexus访问以及登陆
访问URL: http://localhost:8081/nexus ,登陆用户名和密码默认为admin/admin123
![这里写图片描述](//img-blog.csdn.net/20180317231742621?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
Nexus的仓库(Resositores)介绍
如下图所示:nexus仓库类型与分组
仓库类型:
* group(仓库组):一组仓库的集合
* hosted(宿主):配置第三方仓库 (包括公司内部私服 )
* proxy(代理):私服会对中央仓库进行代理,用户连接私服,私服自动去中央仓库下载jar包或者插件
*virtual(虚拟):兼容Maven1 版本的jar或者插件
仓库名称:
* 3rd party: 一个策略为Release的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构建
* Apache Snapshots: 一个策略为Snapshot的代理仓库,用来代理Apache Maven仓库的快照版本构建
* Central: 代理Maven中央仓库
* Central M1 shadow: 代理Maven1 版本 中央仓库
* Codehaus Snapshots: 一个策略为Snapshot的代理仓库,用来代理Codehaus Maven仓库的快照版本构件
* Releases: 一个策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件
* Snapshots: 一个策略为Snapshot的宿主类型仓库,用来部署组织内部的快照版本构件
* Public Repositories:该仓库组将上述所有策略为Release的仓库聚合并通过一致的地址提供服务
![这里写图片描述](//img-blog.csdn.net/20180317231829974?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
配置所有构建均从私服下载
搭建好私服以后, 开发人员或者使用人员可以从私服下载项目构建,而不用直接从远程仓库下载项目构建,,我们需要做如下几个操作步骤.
* 更改本地仓库的setting.xml中配置
做完此配置以后,我们在本地构建项目就可以通过私服下载.
那么私服的项目构建从哪里来?
![这里写图片描述](//img-blog.csdn.net/20180317232437473?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![这里写图片描述](//img-blog.csdn.net/20180317232538174?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
Nexus私服索引下载
Nexus安装好以后我们需要更新远程仓库项目构建的索引文件.
更新索引有两种方式:
1:开启索引自动下载
* 打开Repositories标签,选中远程仓库并打开Configuration,将Download Romote Location 设置为true;
* 在远程仓库(Central)上右键选择Update Index,Nexus会自动建立一条任务计划;一般远程仓库都比较大,构建会比较多,索引文件会很大,像http:
* 从左边Administration中进入找到cheduled Tasks,可以进入Scheduled Tasks查看任务的执行情况,当执行完成时,远程仓库的索引就已经建立完毕了。
![这里写图片描述](//img-blog.csdn.net/20180317232741638?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2:手动更新
请参考如下链接:http://blog.csdn.net/shawyeok/article/details/23564681
通过以上两种方式,我们可以在Browse_Index看到许多文件的话就说明更新成功.
![这里写图片描述](//img-blog.csdn.net/20180317233723391?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
Nexus的目录结构
通过以上章节的学习,我们回过头来看一下nexus私服的目录结构以及主要的两个目录 indexer目录和storage目录
* 整个sonatype-work/nexus目录结构如下:
![这里写图片描述](//img-blog.csdn.net/20180317233830360?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
* Indexer 索引目录结构:
![这里写图片描述](//img-blog.csdn.net/20180317233915999?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
* Storage存储目录结构:
![这里写图片描述](//img-blog.csdn.net/20180317234006678?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
发布本地构建到Nexus
* 首先我们要设置本地项目对Nexus的访问权限控制
如下图所示: 在本地仓库的setting.xml中<servers>标签里面添加如下配置:
![这里写图片描述](//img-blog.csdn.net/20180317234334362?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
* 然后在项目的pom.xml添加项目发布地址的配置
如下图所示,我们在需要发布到远程仓库的构建项目的pom.xml文件添加如下配置:
![这里写图片描述](//img-blog.csdn.net/20180317234808225?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
* 右键项目或者pom.xml文件执行 maven命令 deploy,此命令会将本地构建打包到本地仓库,然后发布到远程仓库中(nexus私服)
![这里写图片描述](//img-blog.csdn.net/20180317234904559?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)