Nexus搭建自己的Maven私服

Posted 点融黑帮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nexus搭建自己的Maven私服相关的知识,希望对你有一定的参考价值。


简介


Nexus是Maven仓库管理器,管理开发所需要的构件。如果你每次都是从Apache提供的Maven中央仓库去下载所需要的构件,那么这通常不是一个好的做法,应该在本地架设一个Maven仓库服务器,再代理远程仓库的同时维护本地仓库,以节省带宽和时间,那么Nexus可以满足这样的需求。


Nexus搭建自己的Maven私服


此外Nexus还提供了强大的仓库管理功能,构件搜索功能,基于Restful客户端,占用较少的内存。


Nexus搭建自己的Maven私服


基于简单的文件系统而非数据库,这些优点使其日趋成为最流行的Maven仓库管理器。



Nexus搭建自己的Maven私服

下载



下载最新的版本,目前最新版本为:

nexus-3.2.0-01-mac.tgz

nexus-3.2.0-01-unix.tar.gz

nexus-3.2.0-01-win64.zip


根据自己的操作系统选择安装包,我的电脑是ubuntu系统,所以我下载的是nexus-3.2.0-01-unix.tar.gz,解压到任意目录,获得目录结构:


|--nexus-3.2.0-01是Nexus的服务主目录

|--sonatype-work是真正的仓库 



Nexus搭建自己的Maven私服

启动


Nexus需要依赖java环境,Java的安装这里就不做说明了,需要注意的是,官方已经明确说明,nexus3.x版本的运行环境需在java8的环境下。


Nexus搭建自己的Maven私服


如果需要修改Nexus服务端口或IP,端口配置在/ nexus-3.2.0-01/etc/ nexus-default.properties

在/ nexus-3.2.0-01/bin下找到nexus执行./nexus run &启动服务。

nexus支持如下命令:{start|stop|run|run-redirect|status|restart|force-reload}

Nexus的配置需要用admin角色完成,默认密码是admin123,进入首页之后,在右上角进行登录。



Nexus搭建自己的Maven私服

配置


Nexus里可以配置3种类型的仓库,分别是proxy,hosted,group。


1. Proxy是远程仓库的代理:比如说在Nexus中配置了central repository的proxy,当用户向这个proxy请求一个构件时,这个proxy就会先在本地查找,如果找不到的话,再去远程仓库下载,返回给用户。相当于一个中转的作用。

2. Hosted是宿主仓库:用户可以把一些自己的构件,deploy到hosted中。


Nexus搭建自己的Maven私服



配置Repository

1. Central Repository的proxy可能就是最关键的一个配置,因为绝大部分构件都是通过这个proxy得到的。在安装完Nexus,这个proxy是预置的,代理了远程服务,网上有一些其他公开的Maven仓库,可以用同样的办法,在Nexus中配置Proxy(如下图maven-public)

2. Hosted Repository一般会配置3个,分别是3rd party,snapshots,releases,分别用来保存第三方的jar,公司内部jar包的快照,公司内部的发布版(如下图maven-releases,maven-snapshots)


Nexus搭建自己的Maven私服


到这里nexus的基本配置就结束了,当然上面介绍的都是最最基本的配置,nexus的功能非常强大。2.x和3.x的差别也是非常大,3.x版本更增加了对 Docker,NuGet,npm,Bower的支持,全面升级了页面,增加管理接口以自动管理任务,性能和用户体验也都有所改善。



Nexus搭建自己的Maven私服

使用


这里介绍一下本地Gradle工程下如何使用刚搭建起来的Nexus私服

在build.gradle里面配置:


repositories {
    maven { url
'http://localhost:8081/repository/maven-public' }
}


在gradle.properties里面配置


nexusUrl=http://localhost:8081
nexusUsername=admin
nexusPassword=admin123


并在build.gradle里面加入


uploadArchives {
    repositories {
        apply
plugin: 'maven'
        
mavenDeployer {
            repository(
url: "${nexusUrl}/repository/maven-releases/") {
                
authentication(userName: nexusUsername, password: nexusPassword)
            }
            snapshotRepository(
url: "${nexusUrl}/repository/maven-snapshots") {
                
authentication(userName: nexusUsername, password: nexusPassword)
            }
        }
    }
}


刷新gradle项目,可以看到发布包的gradle task,如图。


Nexus搭建自己的Maven私服


此时针对gradle使用nexus私服的基本配置已经完成,可以正常下载包,并且发布snapshot及release包。


Nexus搭建自己的Maven私服


参考官方资料:https://books.sonatype.com/nexus-book/reference3/index.html





以上是关于Nexus搭建自己的Maven私服的主要内容,如果未能解决你的问题,请参考以下文章

Nexus搭建Maven私服

搭建Maven私服(使用Nexus)

搭建nexus私服(maven)

使用nexus搭建maven私服

maven私服nexus的安装

搭建Maven私服