一、简介
是种特殊的Maven仓库一般用于公司,比如三十个员工开发一个项目,需要每个人都联网去下载jar,每个人都很痛苦。此时公司可以搭建一个私服,让其中一人去私服下载jar,这样私服中就缓存了那些jar包,其他人在下载的时候就无需重新从远程仓库下载了,直接从私服缓存的地方拿下来即可。
Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:
Apache基金会的Archiva、JFrog的Artifacotory和Sonatype的Nexus,Archiva是开源的,Artifacotory和Nexus的核心也是开源的。
如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
可以理解为在本地局域网建立了一个类似中央仓库的处理器,我们开始将资料下载到中央服务器中,然后在本地maven项目中直接访问中央服务器即可,这样既
节省了网络宽带也会加速项目的开发进度,图如下展示:
二、安装
Linux(已验证)
插入Linux环境安装jdk步骤:
- 上传jdk的tar包:jdk-8u11-linux-x64.tar.gz
- 创建jdk安装目录:# mkdir -p /usr/local/jdk
- 解压安装jdk::tar -zxvf jdk-8u11-linux-x64.tar.gz -C /usr/local/jdk
- 查看是否安装成功:# java -version 未查看到jdk版本,需要配置环境变量。
配置jdk环境变量:# vi /etc/profile 在文件的最后一行添加如下内容:
#set java environment
JAVA_HOME=/usr/local/jdk/jdk1.8.0_11
JRE_HOME=/usr/local/jdk/jdk1.8.0_11/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_H OME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
5.刷新配置:# source /etc/profile 再次查看jdk版本:安装成功!!!
1、首先确保有jdk环境:
使用wget命令下载 wget 想要下载nexus版本的地址:
#wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2-03-bundle.tar.gz
2、ls看到下载的压缩包后解压到新建指定目录下:
# mkdir /usr/local/nexus
# tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C /usr/local/nexus/
# cd /usr/local/nexus
# ls
可以看到两个文件:nexus-2.11.2-03 sonatype-work
(一个 nexus 服务,一个私有库目录)
3、编辑 Nexus 的 nexus.properties 文件,配置端口和 work 目录信息
# cd nexus-2.11.2-03
# ls
# cd conf
# vi nexus.properties
|
4、编辑 nexus 脚本, 配置 RUN_AS_USER 参数
# vi /usr/nexus/nexus-2.11.2-03/bin/nexus
#RUN_AS_USER=
改为:
RUN_AS_USER=root
5、防火墙中打开 8081 端口 [etc目录通常放一些零散的配置文件]
# vi /etc/sysconfig/iptables
添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
保存后重启防火墙(即使防火墙开着也可以访问,作为服务器安全第一)
# service iptables restart
6、启动 nexus [nexus的bin目录下的可以执行文件可以进入bin查看]
nexus start
浏览器访问: http://192.168.180.115:8081/nexus/
默认账号密码:
账号:admin
密码:admin123
Windows(未验证)
1、直接官网 http://www.sonatype.org/nexus/go/ 下载
2、或者使用 https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-latest-bundle.zip 迅雷等工具将压缩包下载。
将压缩包加压,双击console-nexus.bat安装。
3、操作NEXUS
游览器中输入http://127.0.0.1:8081/nexus/,出现如下图所示就代表nexus已经启动成功。
8081为默认的端口号,要修改端口号可进入nexus-2.1.2-bundle\nexus-2.1.2\conf\打开nexus.properties文件,修改application-port属性值就可以了。
默认的用户名和密码:admin/admin123
三、访问权限
Nexus的访问权限模型
Nexus是基于权限做访问控制的,服务器的每一个资源都有对应的权限来控制,因此用户执行特定的操作时就必须拥有必要的权限。管理员必须以角色的方式将权限赋予Nexus用户。用户可以被赋予一个或者多个角色,角色可以包含一个或多个权限,角色还可以包含一个或者多个其他角色。
Nexus上预定义了三个用户,用admin登录后,单击页面左边的User链接,看到如下图列表:
admin:该用户拥有Nexus的全部权限,默认密码为admin123。
deployment:该用户能够访问Nexus,浏览仓库内容、搜索、上传部署构件,但是不能对Nexus进行任何配置,默认密码为deployment123。
anonymous:该用户对应了所有未登录的匿名用户,它们可以浏览仓库并进行搜索。
添加新用户并授予登录访问权限
四、Repository介绍
Repository:
1、Public Repositories,这是一个Repository Group,该Repository Group包含了多个Repository,其中包含了Releases、Snapshots、ThirdParty和Central。
2、3rd party,该Repository即是存放你公司所购买的第三方软件库的地方,它是一个由Nexus自己维护的一个Repository。
3、Apache Snapshots,看名字你就应该知道这是个什么样的Repository,这是一个代理Repository,即最终的依赖还是得在Apache官网上去下载,然后缓存在Nexus中。
4、Central,这就是代理Maven Central Repository的Repository。
5、Releases,你自己的项目要发布时,就应该发布在这个Repository,他也是Nexus自己维护的Repository,而不是代理。
6、Snapshots,你自己项目Snapshot的Repository。
TYPE:
hosted 类型的仓库,内部项目的发布仓库
releases 内部的模块中release模块的发布仓库
snapshots 发布内部的SNAPSHOT模块的仓库
proxy 类型的仓库,从远程中央仓库中寻找数据的仓库
group 类型的仓库,组仓库用来方便我们开发人员进行设置的仓库
五、nexus配置
利用现有nexus索引配置
需要的索引有Public Repositories,3rd party和Central。
Public Repositories部分
Public Repositories部分,需要注意左下方的顺序:
3rd party部分:
使用3rd party上传第三方jar包
(也可以通过 mvn deploy ---上传私服jar包)
在Repository列表中,选中 3rd party,选中artifact upload,
选择GAV Defini3ion: GAV Parameters,Auto Guess 打钩。
在下方输入JAR包对应的Group、Artifact、Version,Packaging选择JAR格式。
点击select Artifact(s) to upload 按钮,选择要上传的JAR包。
点击提交显示如上图 即为上传成功。
此时在3rd下面就可以看到我们上传的包了:
上传的包会在存到本地路径
到此路径下也可以看到我们刚上传的jar包。
我们要在私服上查找我们需要的包也可以使用全局搜索;
当我们在3rd下上传完文件后,可以看到Public Repositories下也有了文件。
所以前面说Public Repositories,是一个Repository Group,该Repository Group包含了多个Repository,其中包含了Releases、Snapshots、ThirdParty和Central。
Central部分
新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,最重要的一件事情就是开启远程索引下载。把download remote indexes改成true。保存!!
保存后后台会运行一个任务,点击菜单栏的administration -- Scheduled Tasks选项即可看到有个任务在RUNNING。
六、项目引用
如果要使用nexus中的jar包时需要在pom.xml 中引入如下代码:
<repositories>
<repository>
<id>local</id>
<name>Team Nexus Repository</name>
<url>http://192.168.181.70:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
在pom中引用一个jar包
确保本地没有此jar包,当修改完xml文件后,保存。
这时本地没有此jar包 就会到nexus中去找,但是我们的nexus是新安装的 也没有此jar包,这时nexus就会到中央仓库中去下载到nexus,本地项目再从nexus中下载到而本地。当保存文件后 我们在取nexus和本地仓库中去看是否真的会有此jar包。
这里可以在nexus的Central中可以看到新下载的jar包。
再到PublicRepositories中可以看到也多了此jar包。