好了,新建一个 Maven 项目测试一下吧,看看jar包是不是从你指定的私服地址下载的。
OK,重启你的 Ubuntu 试试吧!
然后,在我们要发布的项目所在 POM 文件中<project>标签下加入如下配置:
切记<server>标签 id 要和<distributionManagement>标签中的<repository>标签 id 要一致。
mvn deploy 命令就发布到仓库了!!!
OK,伺服搭建、配置,以及本地 Maven 如何使用私服,基本介绍完毕。若有疑问或不对之处,欢迎联系我指正!
-
安装环境
Ubuntu 14.04.3 LTS 64 位
-
Nexus 安装
首先下载 Nexus 的 Linux 安装包,官方地址:,如果不能打开或无法下载,可以通过我的网盘分享下载:。
下载完成后,把你的 jdk 安装包上传到 Ubuntu 中 /usr/local/src 目录下,Nexus 是依赖 java jdk 的,如果已经安装好了 jdk,如下命令开始进行安装。()
-
cd /usr/local/srctar –zvxf nexus-latest-bundle.tar.gzmv sonatype-work ../mv nexus-2.11.2-06 ../cd ../nexus-2.11.2-06/bin./nexus start
nexus 启动失败,错误信息如下:
-
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.
意思是说如果你想运行这个脚本,必须先设置环境变量RUN_AS_USER=root,那么我们来加入这个环境变量
-
vi /etc/profile# 末尾重起一行加入export RUN_AS_USER=root# 退出保存source /etc/profile # 让环境变量立即生效
重新执行./nexus start。正常启动了,如果还报错,注意阅读异常信息,耐心 Google Baidu。
我们可以通过网页访问 ,来查看服务是否安装成功! 登陆的用户名和密码是:admin/amdin123
-
-
配置 Maven 使用私服下载 jar 包
通常我们本地配置好 Maven 以后,Maven 默认从http://repo.maven.apache.org/maven2下载jar包,我们如果需要指定 Maven 从自己的伺服下载 jar 包,需要修改 MAVEN_HOME/conf/settings.xml文件(MAVEN_HOME是你 Maven的安装目录),找到 <mirros>标签,在其中加入如下内容:
-
myNexus * My Nexus Mirror http://192.168.0.147:8081/nexus/content/groups/public true true
-
-
mirrorOf
* = everything external:* = everything not on the localhost and not file based. repo,repo1 = repo or repo1 *,!repo1 = everything except repo1 -
从私服下载 snapshots 版本的 jar 包
进行了如上配置后,默认就从私服下载 jar 包了,但是无法从私服下载到 snapshots 版本的 jar 包和插件。若想下载 snapshots版本需要进行如下配置,找到修改 MAVEN_HOME/conf/settings.xml文件中<profiles>标签,在其中加入如下内容:
-
use-local-nexus nexus local private nexus http://192.168.0.147:8081/nexus/content/groups/public/ true true nexus local private nexus http://192.168.0.147:8081/nexus/content/groups/public/ true false
-
-
Maven私服开机启动设置
-
vi /usr/local/nexus-2.11.2-06/bin/nexus# 修改一下两项NEXUS_HOME="/usr/local/nexus-2.11.2-06"RUN_AS_USER=root# 保存退出
-
vi /etc/rc.local# 在 exit0 之前加入下面一行/usr/local/nexus-2.11.2-06/bin/nexus start
-
-
私服讲解
Maven 安装完成以后,一般我们会对其进行一些配置,使其更易于使用。
登陆后点击左侧导航的 Repositories ,看到如下图
注意 Type 这一列,Maven 仓库一共有 4 中类型:group,hosted,proxy,virtual。
-
hosted 本地仓库,通常我们会部署自己的构件到这一类型的仓库。如图,安装好私服后,会默认有三个 hosted 类型的仓库,名字分别是 3rd party,Releases,Snapshots。
-
3rd party 是用来上传一些公共库中没有的jar包,如 Oracle数据库驱动,MySQL数据库驱动。我们将驱动上传到 3rd party 这个仓库以后,项目就能直接通过私服下载数据库驱动了。
-
Releases 我们将自己开发的jar包发布到仓库,如果jar包是 Releases 版本的,jar包会被发布到这个仓库
-
Snapshots,同 Releases 一样,如果我们的 jar 包是 Snapshots版本的,jar包会被发布到这个仓库
-
-
proxy 代理仓库,安装好私服后,会默认有一个名为 Central 的仓库,它是一个代理仓库。也就是说,假如你请求私服下载 jar 包,但是私服中没有此 jar 包,那么私服会通过代理仓库来下载你请求的 jar 包。你可以配置多个代理仓库,配置完代理仓库后,记得将代理仓库加入Public Repositories组。另外记得将代理仓库的 Download Remote Indexes 选项设置为 true 。这里说几个常用的代理仓库地址:
-
https://repository.apache.org/snapshots/
-
http://repo1.maven.org/maven2/ (Central 库的地址就是这个)
-
https://nexus.codehaus.org/snapshots/
-
http://maven.oschina.net/content/groups/public/ (开源中国的Maven仓库)
-
http://repository.sonatype.org/content/groups/forge/
-
-
group,仓库组。仓库组中可以加入多个hosted/proxy类型的仓库。它相当于hosted/proxy类型的仓库集合,所以我们配置 Maven 从私服下载 jar 包时,一般把 Maven 私服地址指向这个仓库组,而不指向具体某个 hosted/proxy类型的仓库。
-
上面说的上传 jar 包到 hosted 类型仓库,添加一个 proxy 代理仓库,以及在group中加入多个 hosted/proxy类型的仓库,你可以参考这篇文章
-
-
发布自己的 jar 包到私服
首先,MAVEN_HOME/conf/settings.xml文件中<servers>标签下加入如下配置:
-
nexus-releases admin admin123 nexus-snapshots admin admin123
-
nexus-releases Nexus Release Repository http://192.168.0.147:8081/nexus/content/repositories/releases/ nexus-snapshots Nexus Snapshot Repository http://192.168.0.147:8081/nexus/content/repositories/snapshots/
-
其它需要注意的问题及推荐
- 尽量不要配置mirrorOf为*, 会导致pom文件中的repository不生效
- 私服的配置推荐用profile配置而不是mirror(毕竟mirror是镜像,私服其实是n个镜像及自己的开发库等的合集)
nexus nexus http://192.168.163.xx:xx/nexus/content/groups/public/ true true nexus http://192.168.163.xx:xx/nexus/content/groups/public/ true true nexus