Maven私服Nexus3.X搭建

1.Nexus介绍

Nexus用来搭建一个自己的Maven仓库服务器也就是私服,我们正常情况下是去中央仓库去下载jar包,有了私服之后,我们是连接到私服去下载jar包,如果私服不能访问再到中央仓库去下载。搭建Nexus有什么好处呢?如果没有私服,团队中新来了一个成员,就要去中央仓库下载,因为中央仓库在国外,去中央仓库下载是很慢的,如果jar包很多的话可能要下个一天,不过这个我能想到两种解决方案,第一,直接去同事的电脑上把他的Maven仓库打包通过局域网或者移动硬盘等传输到自己的电脑上,第二,配一个国内速度比较快的镜像,比如阿里云的镜像,目前是我觉得速度最快的一个镜像了。

阿里云镜像:


      alimaven
      aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
      central
看地址就知道,其实就是阿里云基于Nexus搭建的一个Maven仓库。但是如果你们的项目是分模块开发的,而且不同的人有些模块是没有权限访问的,只能是通过jar包的形式引进来,这种情况用镜像肯定是下不下来你们公司自己的jar包的,这时候就很有必要在公司搭建一个私服。


2.Nexus3.x安装

本文介绍在Linux的发行版CentOS7下的Nexus的安装

Nexus3.x下载地址:https://www.sonatype.com/download-oss-sonatype

Nexus的启动依赖于JDK,所以先安装配置好JDK

JDK8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

解压JDK,tar -zxvf jdk-8u121-linux-x64.tar.gz

修改配置文件,vi /etc/profile   在末尾加上:

JAVA_HOME=/usr/java/jdk1.8.0_121
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
执行 source /etc/profile 使配置文件生效

执行 java -version 如果出现jdk版本号说明jdk安装成功。

解压nexus,tar -zxvf nexus-3.2.1-01-unix.tar.gz

启动nexus, ./nexus-3.2.1-01/bin/nexus start

启动比较慢,需要等一会儿,再访问 http://${yourIp}:8081,如果不能访问,看下是不是没有开放8081端口,或者直接关闭防火墙。

Maven私服Nexus3.X搭建_第1张图片


简单说一下这些仓库是干嘛的:

maven-central:注意这个类型是proxy,这是一个远程仓库的代理。什么意思呢?就是说如果私服中不存在我们要下的jar包,它会从远程仓库中下载过来放在这个仓库,默认是从Maven中央仓库下载,http://repo1.maven.org/maven2/,我觉得可以配置从国内镜像下载,要不然第一次从私服下载还是会很慢。试了一下没成功,可能是我没配好,有兴趣可以试一下。

maven-public:这个仓库类型是group,表示是一个组,也就是可以是其他几个仓库的组合,为了可以对外提供一个统一的地址。默认包括maven-central,maven-releases,maven-snapshots 这三个仓库。

maven-releases:仓库类型是hosted,表示是一个宿主仓库,我们自己项目的构件就可以放在这个仓库,也可以放第三方的jar包,注意这个仓库放的是release版本的。

maven-snapshots:这个仓库也是hosted,跟上面那个一样,不同的是这个仓库放的是snapshot版本。


再说一下release 和 snapshot 的区别

release 表示的是稳定版,snapshot是一个开发中的快照版。

假如你的同伴依赖你的模块进行开发,如果你没有用snapshot,那么你每次修改完代码发布到私服中,你的同伴都需要把本地仓库的jar包先删掉再重新更新才会是最新的代码,或者你在发布到私服之前每次都要修改POM文件的版本号,显然这是不合理的。但是如果用了snapshot版的话,发布到私服中的jar包名字后面会自动带有时间戳。类似于这样:

这个时候你的同伴就能自动更新最新的snapshot版本。


3.配置Maven私服

有几种方式配置私服。注意Nexus3.x 跟Nexus2.x 地址是不一样的,Nexus2.x的地址参考上面阿里云的镜像。

第一,假如你只有一个项目,你可以在项目的POM文件中加入下面的配置,只对当前项目起作用。

    
        
            maven-nexus
            maven-nexus
            http://192.168.58.130:8081/repository/maven-public/
            
                true
            
            
                true
            
        
    
这时候你再去下载一个你本地仓库没有的jar包,你会发现它会去私服下载。

第二,如果你有多个项目都要用到这个私服,可以在setting.xml文件中配置,对所有项目起作用,如下:

    
        
            nexus
            
                
                    my-nexus
                    Nexus
                    http://192.168.58.130:8081/repository/maven-public/
                    
                        true
                    
                    
                        true
                        always
                    
                
            
        
    
    
        nexus
    

这两种方式都是先去访问私服,如果私服挂掉了,会直接去访问中央仓库,如下图:

Maven私服Nexus3.X搭建_第2张图片


第三,如果不想私服挂掉了,去访问中央仓库的话,可以这么配置,如下:


      my-nuxus
      my nexus
      http://192.168.58.130:8081/repository/maven-public/
      central

通过镜像的方式来配置,有没有发现跟配置阿里云镜像的方式是一样的,现在如果私服挂掉了,是不会再去中央仓库下载的。如下图:

Maven私服Nexus3.X搭建_第3张图片

(从来没画过图,这两张图画了我半个小时)


有没有想过如果同时配了私服和阿里云镜像会怎样,我试了一下,maven首先会去私服下载jar包,如果把私服停掉,则会去阿里云镜像下载。


4.发布构件到Nexus私服

我们开发的模块被其他同伴依赖,所以我们要发布jar包到私服中,供其他同伴下载使用。

首先在setting.xml文件中配置帐号信息:

    
	    
		releases  
		admin  
		admin123  
	    
	    
		snapshots  
		admin  
		admin123  
	  
  


admin,admin123是默认的帐号密码,然后在POM文件中加入如下配置:


        
            snapshots
            Nexus Snapshot
            http://192.168.58.130:8081/repository/maven-snapshots
        
        
            releases
            Nexus Release
            http://192.168.58.130:8081/repository/maven-releases
        
    

这里的id要对应server中的id,接下来运行maven命令,mvn deploy 就会上传到私服,打开Nexus看一眼

Maven私服Nexus3.X搭建_第4张图片


更多Nexus3.x参考:http://www.cnblogs.com/kevingrace/p/6201984.html


你可能感兴趣的:(Maven)