一、简介

是种特殊的Maven仓库一般用于公司,比如三十个员工开发一个项目,需要每个人都联网去下载jar,每个人都很痛苦。此时公司可以搭建一个私服,让其中一人去私服下载jar,这样私服中就缓存了那些jar包,其他人在下载的时候就无需重新从远程仓库下载了,直接从私服缓存的地方拿下来即可。

Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:

Apache基金会的Archiva、JFrog的Artifacotory和Sonatype的Nexus,Archiva是开源的,Artifacotory和Nexus的核心也是开源的。

如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。

可以理解为在本地局域网建立了一个类似中央仓库的处理器,我们开始将资料下载到中央服务器中,然后在本地maven项目中直接访问中央服务器即可,这样既

节省了网络宽带也会加速项目的开发进度,图如下展示:

maven nexus 下载 maven和nexus_maven nexus 下载

二、安装

Linux(已验证)

插入Linux环境安装jdk步骤:

  1. 上传jdk的tar包:jdk-8u11-linux-x64.tar.gz
  2. 创建jdk安装目录:# mkdir -p /usr/local/jdk
  3. 解压安装jdk::tar -zxvf jdk-8u11-linux-x64.tar.gz -C /usr/local/jdk
  4. 查看是否安装成功:# java -version 未查看到jdk版本,需要配置环境变量。

maven nexus 下载 maven和nexus_maven_02

配置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

maven nexus 下载 maven和nexus_maven_03

       5.刷新配置:# source /etc/profile 再次查看jdk版本:安装成功!!!

maven nexus 下载 maven和nexus_上传_04

 

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

# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus
# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF

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

maven nexus 下载 maven和nexus_maven nexus 下载_05

 

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安装。

maven nexus 下载 maven和nexus_上传_06

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链接,看到如下图列表:

maven nexus 下载 maven和nexus_jar包_07

       admin:该用户拥有Nexus的全部权限,默认密码为admin123。
       deployment:该用户能够访问Nexus,浏览仓库内容、搜索、上传部署构件,但是不能对Nexus进行任何配置,默认密码为deployment123。
       anonymous:该用户对应了所有未登录的匿名用户,它们可以浏览仓库并进行搜索。

添加新用户并授予登录访问权限

maven nexus 下载 maven和nexus_maven_08

四、Repository介绍

maven nexus 下载 maven和nexus_jar包_09

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部分,需要注意左下方的顺序:

maven nexus 下载 maven和nexus_jar包_10

3rd party部分:

maven nexus 下载 maven和nexus_上传_11

maven nexus 下载 maven和nexus_maven nexus 下载_12

使用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包。

maven nexus 下载 maven和nexus_jar包_13

maven nexus 下载 maven和nexus_maven nexus 下载_14

  

maven nexus 下载 maven和nexus_jar包_15

点击提交显示如上图 即为上传成功。

此时在3rd下面就可以看到我们上传的包了:

maven nexus 下载 maven和nexus_maven_16

上传的包会在存到本地路径

maven nexus 下载 maven和nexus_jar包_17

到此路径下也可以看到我们刚上传的jar包。

maven nexus 下载 maven和nexus_jar包_18

我们要在私服上查找我们需要的包也可以使用全局搜索;

maven nexus 下载 maven和nexus_maven nexus 下载_19

当我们在3rd下上传完文件后,可以看到Public Repositories下也有了文件。

maven nexus 下载 maven和nexus_jar包_20

所以前面说Public Repositories,是一个Repository Group,该Repository  Group包含了多个Repository,其中包含了Releases、Snapshots、ThirdParty和Central。

Central部分

新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,最重要的一件事情就是开启远程索引下载。把download remote indexes改成true。保存!!

maven nexus 下载 maven和nexus_jar包_21

maven nexus 下载 maven和nexus_maven_22

 

保存后后台会运行一个任务,点击菜单栏的administration -- Scheduled Tasks选项即可看到有个任务在RUNNING。

maven nexus 下载 maven和nexus_上传_23

六、项目引用

如果要使用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>

maven nexus 下载 maven和nexus_maven_24

在pom中引用一个jar包

maven nexus 下载 maven和nexus_上传_25

确保本地没有此jar包,当修改完xml文件后,保存。

这时本地没有此jar包 就会到nexus中去找,但是我们的nexus是新安装的 也没有此jar包,这时nexus就会到中央仓库中去下载到nexus,本地项目再从nexus中下载到而本地。当保存文件后 我们在取nexus和本地仓库中去看是否真的会有此jar包。

maven nexus 下载 maven和nexus_maven_26

maven nexus 下载 maven和nexus_maven_27

这里可以在nexus的Central中可以看到新下载的jar包。

再到PublicRepositories中可以看到也多了此jar包。