Maven私服搭建

私服简介

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务器,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。我们去访问这个服务器,这台服务器将需要的构件返回给我们,这台服务器中如果也没有我们需要的构件,那么这个代理服务器会去远程仓库中查找,然后将其先下载到代理服务器中,然后再返回给我们本地的仓库。我们可以也将本地的构件发布到nexus中。

私服的好处

  • 加速maven构件的下载速度

  • 节省宽带,加速项目构建速度

  • 方便部署自己的构件以供他人使用

  • 提高maven的稳定性,中央仓库需要本机能够访问外网,而如果采用私服的方式,只需要本机访问内网私服就可以了。

搭建私服的开源仓库管理软件

  • Apache基金会的archiva

  • JFrog的Artifactory

  • Sonatype的Nexus

安装Nexus私服

Windows安装

1、首先下载安装JDK,配置Java环境变量。

2、下载nexus,官网下载点击:Download,根据操作系统选择对应的文件下载。


3、下载完成后解压到本地计算机中。


4、启动nexus

运行cmd.exe,进入到nexus安装目录bin目录下,输入nexus.exe /run命令。

5、验证结果

浏览器中打开http://localhost:8081。


6、登录nexus

点击上图右上角的 Sign in ,输入用户名和密码,nexus默认用户名是 admin,密码是第一次启动的时候生成的,密码位于下面的文件中:安装目录/sonatype-work/nexus3/admin.password。

登录后弹出一个修改密码的页面,点击Next-->输入新密码-->Next-->选择是否可以匿名登录-->Next-->Finish。


7、其他常见操作

启动的cmd窗口中按: ctrl+c ,可以停止Nexus。

默认端口是8081,如果和本机有冲突,可以在下面的文件中修改:nexus-3.35.0-02etc exus-default.properties。

Linux安装

[root@test1117 nexus]# tar -zvxf latest-unix.tar.gz
[root@test1117 nexus]# ls
latest-unix.tar.gz  nexus-3.19.1-01  sonatype-work
[root@test1117 bin]# /opt/nexus/nexus-3.19.1-01/bin/nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Starting nexus

在 /etc/sysconfig/iptables 文件中加入下面内容:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT

执行下面的命令,让上面的配置生效:

[root@test1117 bin]# service iptables restart
Redirecting to /bin/systemctl restart iptables.service

访问http://Linux系统的IP:8081。


用户名为 admin ,密码在/opt/nexus/sonatype-work/nexus3/admin.password,登录后请立即修改密码。

Nexus中仓库的分类

nexus中有个默认自带的仓库列表,里面包含了各种各样的仓库。这些仓库主要分为三类,代理仓库、宿主仓库和仓库组。


代理仓库

代理仓库主要是让使用者通过代理仓库来间接访问外部的第三方远程仓库的。代理仓库会从被代理的仓库中下载构件,缓存在代理仓库中以供maven用户使用。

创建代理仓库

1、nexus仓库列表中点击create repository按钮,如下图:




2、进入添加页面,选择 maven2(proxy) ,这个表示 代理仓库 ,如下图:




3、输入远程仓库的信息,如下图:


第一个红框中输入仓库名称:maven-aliyun
第二个红框选择:Release,表示从这个仓库中下载稳定版的构件
第三个红框输入阿里云仓库地址:https://maven.aliyun.com/repository/public

4、点击底部的 Create repository 按钮,创建完成,如下图:


宿主仓库

宿主仓库主要是给我们自己用的,主要有2点作用:

1. 将私有的一些构件通过nexus中网页的方式上传到宿主仓库中给其他同事使用

2. 将自己开发好一些构件发布到nexus的宿主仓库中以供其他同事使用。

仓库组

maven用户可以从代理仓库和宿主仓库中下载构件至本地仓库,为了方便从多个代理仓库和宿主仓库下载构件,maven提供了仓库组,仓库组中可以有多个代理仓库和宿主仓库,而maven用户只用访问一个仓库组就可以间接地访问这个组内所有的仓库,仓库组中多个仓库是有顺序的,当maven用户从仓库组下载构件时,仓库组会按顺序依次在组内的仓库中查找组件,查找到了立即返回给本地仓库,所以一般情况我们会将速度快的放在前面。仓库组内部实际上是没有构件内容的,他只是起到一个请求转发的作用,将maven用户下载构件的请求转发给组内的其他仓库处理。

nexus默认有个仓库组 maven-public ,如下图:


点击一下 maven-public 这行记录,进去看一下,如下图:


上图中第一个红框是这个仓库组对外的一个url,我们本地的maven可以通过这个url来从仓库组
中下载构件至本地仓库。
第二个红框中是这个仓库组中的成员,目前包含了3个仓库,第1个是宿主的releases版本仓库,
第2个是宿主快照版本的仓库,第3个是代理仓库(maven社区中央仓库的代理)。

刚才我们新增的 maven-aliyun 在左边,我们将其也加到右边的仓库成员( Members )列表,然后将 maven-aliyun 这个仓库放在第3个位置,这个仓库的速度比 maven-central 要快一些,能加速我们下载maven构件的速度,如下图:


最后点击Save,至此仓库组已经配置好了。

配置本地Maven从nexus下载构件

获取仓库组对外的地址,点击下图中的 copy 按钮,获取仓库组的地址。





1、配置pom.xml的方式

配置pom.xml的方式和之前一篇《Maven web项目创建和Maven依赖仓库介绍》中配置远程仓库类似,把远程仓库的URL改为仓库组的URL。不同的时登录私服需要账户密码,可以在maven配置文件settings.xml中加入如下内容:

maven-nexus
admin
admin123

这里的id要和pom.xml文件配置的私服仓库组id一致。这里的用户密码就是nexus登录的用户密码。

配置完成后,打开cmd.exe,进入Maven项目目录输入mvn compile命令


2、镜像方式配置

修改Maven安装配置文件settings.xml,加入如下内容:

mirror-nexus
*
nexus镜像
http://localhost:8081/repository/maven-public/

上面 mirrorOf 配置的 * ,说明所有远程仓库都通过该镜像下载构件。url:这个为nexus中仓库组的地址。

nexus访问需要用户密码,还需加入如下内容:

mirror-nexus
admin
admin123

配置完成后,打开cmd.exe,进入Maven项目目录输入mvn compile命令,就可以从nexus下载构件了。

本地构件发布到私服

本地构件发布到私服,常用的有两种方式:使用maven部署构件至nexus私服和手动部署第三方构件至nexus私服。exus私服中提供了两个默认的宿主仓库分别用来存放 SNAPSHOT 版本和 release 版本。

使用maven部署构件至nexus私服

1、修改pom.xml配置,加入如下内容:

release-nexus
http://localhost:8081/repository/maven-releases/
nexus私服中宿主仓库->存放/下载稳定版本的构件


snapshot-nexus
http://localhost:8081/repository/maven-snapshots/
nexus私服中宿主仓库->存放/下载快照版本的构件

2、修改Maven安装配置文件settings.xml,加入如下内容:

release-nexus
admin
admin123


snapshot-nexus
admin
admin123

这里的id要和pom文件中对应的id保持一致。

3、执行mvn deploy 命令,执行这个命令的时候,会对构件进行打包,然后上传到私服中。


访问私服快照版本仓库地址:http://localhost:8081/repository/maven-snapshots/



点击brower连接,如下图,我们的构件上传成功了。


如果其他同事需要使用上面这个构件,只需要点击下图中的pom文件,右边会显示构件的坐标,然后可以拿去使用了,如下图:


注意:snapshot属于快照版本,同一个snapshot版本的构件可以重复部署到私服中,如果私服中已经存在了则会进行覆盖掉,而release是稳定版本的构件,重复部署会报错。

手动部署第三方构件至nexus私服

手动上传只支持发布稳定版本的构件,操作如下:


图中第一行 maven-releases 宿主仓库就是存放用户自己构件的仓库,点击上图中列表中的第一行,进入上传页面,如下图:



上面页面中点击 Browse 选择本地的构件,然后输入其他坐标信息,点击 Upload 完成上传操作。


访问http://localhost:8081/#brose/browse:maven-releases,可以看到上传好的构件,如下图:


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

推荐阅读更多精彩内容