使用Nexus搭建maven私有仓库

automate your Software Supply Chain.png

Nexus 官网:http://www.sonatype.com/

前言

什么是maven、gradle

Maven是一个项目管理和自动构建工具。

Gradle是一个基于Apache AntApache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。

为什么搭建maven私有仓库

做java开发的童鞋对Maven一定不陌生;做android开发的童鞋,用得最多的是gradle。其实gradle的第三方库,也是放在maven仓库上。

对于第三方库,大家基本都配置maven、gradle从远程获取,估计很少直接下载jar放在工程里(对于没有放在maven repository上的库,只能这么干)。这么做方便管理依赖

app开发中遇到问题

做app开发,特别是只有几万行代码量的小项目,开发团队也就几个人,通常只用一个工程玩耍。随着业务扩展,工程变得越来越大,代码量大大增加,开发人数也多了,问题开始暴漏:改动一个地方往往影响到其他人的代码,功能模块耦合严重,构建速度慢....

业界一些解决方法:1.组件化,按功能拆分出各种组件,数据存储、网络层、日志 等;2.拆分业务,一个业务一个module;3.业务插件化,一个业务一个工程,每个业务独立编译并运行.....

因此,引入依赖管理是必不可少的。把各个模块单独编译,部署上maven仓库,主工程or业务工程通过maven、gradle引用这些依赖。这么做还有好处,就是持续集成!某个模块修改了,跑单元测试,通过后才放上仓库。业务工程同步一下maven,万一有问题,还可以在服务端回滚到上一个版本。

(笔者对持续集成怕有误,关于持续集成可以参考这篇文章《谈谈持续集成,持续交付,持续部署之间的区别》

  • 单独编译、单独部署
  • 灵活管理依赖
  • 便于持续集成
Edwards Deming,Our Hero and Inspiration.png

搭建

官方文档 Installing and Running

安装Java Envirment

由于Nexus不支持OpenJDK,所以必须卸装OpenJDK并安装Oracle Java。参考 如何在Ubuntu Linux上安装Oracle Java (可能要翻墙)

下载Nexus Repository OSS

下载地址: http://www.sonatype.com/download-oss-sonatype

笔者系统环境是ubuntu16.04(在windows上vmware虚拟),所以下载了Unix nexus-3.0.1版本。例如下载到$HOME下,然后解压压缩包:

$ tar xvzf nexus-3.0.1-01-unix.tar.gz

启动Nexus

进入nexus根目录下的bin:

cd ./nexus-3.0.1-01/bin

运行Nexus:

sudo ./nexus run

运行成功后,会出现

Started Sonatype Nexus OSS 3.0.1-01

nexus_run

访问nexus UI界面

在ubuntu打开浏览器,输入http://localhost:8081/

当然,只要知道ubuntu虚拟机内网ip,也可以在windows通过内网ip访问nexus


配置为Linux Service

编辑.bashrc文件(通常在用户根目录):

gedit .bashrc

配置$NEXUS_HOME为nexus绝对路径,在文件末尾加入:

NEXUS_HOME="/home/{user}/nexus-3.0.1-01"

编辑bin/nexus.rc

run_as_user="nexus"

/etc/init.d放nexus软连接

sudo ln -s $NEXUS_HOME/bin/nexus /etc/init.d/nexus

运行服务

update-rc.d.

cd /etc/init.d
sudo update-rc.d nexus defaults
sudo service nexus start

官网有chkconfigupdate-rc.dsystemd三种方式,笔者选择最简单的update-rc.d

(开启ubuntu第一次执行start,可能要等上几十秒才能启动)


用户操作界面

登陆

假设ubuntu ip地址是192.168.86.130,浏览http://192.168.86.130:8081/打开用户界面(前面已提到)。点击右上角Sign in登陆,默认账号admin,密码admin123

sign in

登陆后:


创建用户

在配置页面,选择Security - User,点击create user

create user.png

填写用户信息,再点击最底下的create user即可创建用户

user info

创建xiaoming用户后,可以Sign out,用xiaoming账号登陆了。

创建maven仓库

在配置界面,选择Repository - repositories,图中红色选线框着的是默认仓库。点击create repository

repositories
create repository

这里简单介绍下几种repository的类型:

  • hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
  • proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

我们的目的仅仅管理自己开发的组件,选择host即可。

填写仓库配置

version policy,可以选Release或Snapshot,如果仓库开放给所有人,那选Release比较好,如果公司内部或自己用,其中一个就可以。

仓库xiaoming-host创建完毕

xiaoming-host

查看仓库的项目

如果上传了项目,在Nexus用户界面,选择components -> xiaoming-host

deploy success

小结

google一下“Nexus搭建”,很多文章都是基于2.x版本,3.x安装教程相对少一些,笔者因为找不到很好的文章,才决定自己写一篇。官方文档还是挺容易理解的,步骤也很清晰,建议大家在搭建过程不懂时,查阅官方文档。

官方文档《Installing and Running with the Distribution Archive》


相关阅读

《InteliJ上传Java项目到Maven仓库》
《Android Studio上传项目到Maven仓库》
《发布Android Library到Bintray、JCenter》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容