美文网首页
Nexus搭建自己的Maven私服

Nexus搭建自己的Maven私服

作者: 点融黑帮 | 来源:发表于2017-05-22 11:53 被阅读1769次
    简介

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

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

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


    下载

    Nexus的官方地址:http://www.sonatype.org/nexus/

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

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

    如果需要修改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里可以配置3种类型的仓库,分别是proxyhostedgroup

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

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

    3. Group是仓库组:在Maven里没有这个概念,是Nexus特有的,目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要配置多个地址,只要统一配置group地址就可以了。

    配置Repository

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

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

    3. Group Repository是一个虚拟的仓库,通过对实体仓库聚合对外暴露统一的地址(如下图maven-public)

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

    使用

    这里介绍一下本地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 {

    applyplugin:'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,如图。

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

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

    本文作者:孙刚(点融黑帮),LoanBusiness Team 软件开发工程师,平时喜欢看看电影玩玩游戏,标准程序猿一枚。

    相关文章

      网友评论

          本文标题:Nexus搭建自己的Maven私服

          本文链接:https://www.haomeiwen.com/subject/ltpbxxtx.html