Maven搭建私有仓库(私服)

Posted 小简(JanYork)

tags:

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

Nexus简介

作为一个非常优秀且我找不到合适的替代品的二进制包储存库,功能也是非常强大,不单纯只能设置Maven私有仓库。

包括我们常见的YumDockernpmNuGel等等。

专业版需要付费,个人用免费版就可以,专业版更加强大。

专业版与免费版区别如下:

使用Nexus

首先下载,提供了三个不同版本,我这就直接用Windows版本了。

然后解压:

命令cd到此路径下bin文件夹:

执行如下命令:

 // Unix & OS X
 ./nexus run
 ​
 // Windows  
 nexus.exe /run
复制代码

等待跑起来,可能有些慢。

这样就是跑起来了。

默认端口是8081

如果端口被占用,我们可以修改配置文件。

我们访问后是如下页面:

管理员密码在文件中需要自行查看:

账户就是admin

管理仓库

创建后会自带几个仓库:

仓库类型描述
maven-centralproxy远程中央仓库
maven-releaseshosted私库发行仓库
maven-snapshotshosted私库快照仓库
maven-publicgroup仓库组

仓库类型:

类型描述
proxy可以自主配置使用的远程仓库地址
hosted内部项目构件发布的仓库类型
virtual虚拟仓库类型(基本不用)
group可以自由顺序组合多个仓库使用

上传Maven依赖

批量上传(这段教程来源互联网):

  1. 确保项目在本地maven环境下无错误;
  2. 进入到本地maven仓库下;
  3. 新创建一个sh脚本(这个脚本是从网上找的,但是已经不记得从哪找的了)
 #!/bin/bash
 # copy and run this script to the root of the repository directory containing files
 # this script attempts to exclude uploading itself explicitly so the script name is important
 # Get command line params
  
 while getopts ":r:u:p:" opt; do
  case $opt in
      r) REPO_URL="$OPTARG"
      ;;
      u) USERNAME="$OPTARG"
      ;;
      p) PASSWORD="$OPTARG"
      ;;
  esac
 done
  
 find . -type f -not -path './mavenUpload.sh*' -not -path '*/.*' -not -path '*/^archetype-catalog.xml*' -not -path '*/^maven-metadata-local*.xml' -not -path '*/^maven-metadata-deployment*.xml' | sed "s|^./||" | xargs -I '' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T  $REPO_URL/ ;
复制代码

4.在当前目录执行这个脚本,并加上maven私库的账号密码,以及地址。

 ./mavenUpload.sh -u admin -p admin -r http://IP:PORT/repository/dataservice/
复制代码

执行完毕后,刷新maven库,就可以看到上传的包了。

手动上传:

当我们maven库已经形成规模,并且仅仅缺少一两个依赖的时候,我们就通过手动上传的方式添加依赖。

点击上传,点击需要上传到的仓库,然后选择文件。

需要填写如下字段请自行解决:

提醒:

最后包都能顺利下载,但是maven插件却非暴力抵抗,不能提供下载,于是又在maven的配置中加上了私库地址,并且着重加上了central这个标签。

这样本地项目的依赖和maven插件都恢复正常。

其他命令

Windows:

nexus-2.7.0-06/bin/jsw/windows-x86-64中还有其他的一些脚本

install-nexus.bat:将Nexus安装成Windows服务;

uninstall-nexus.bat:卸载Nexus Windows服务;

start-nexus.bat:启动Nexus Windows服务;

stop-nexus.bat:停止Nexus Windows服务;

Linux:

  1. 用户需要进入到nexus-2.7.0-06/bin/jsw/目录,根据操作系统类型选择文件夹,进入后然后运行如下命令:./nexus console。如果需要停止Nexus,可以使用Ctrl+C 键。例如:Ubuntu32位系统,只需进入到nexus-2.7.0-06/bin/jsw/linux-x86-32/,然后运行上面的命令即可。
  2. 除console之外,Nexus的Linux脚本还提供如下的命令:

./nexus start:启动后台Neuxs服务;

./nexus stop:停止后台Neuxs服务;

./nexus status:查看后台Nexus服务的状态;

./nexus restart:重新启动后台Nexus服务;

注意,我这里可能版本和你不一样,所以路径也不愿意,注意版本更新后有所不同,灵活阅读技术文章很重要。

CMD或者终端界面跑NexusCtrl+C后进程也会消失,至于怎么让它在后台保留,想必聪明的你不需要我多教了吧。

尾述

当然,实际使用还有非常多的功能,上传也有很多方法,但是我们如果没有这方面业务,就不需要深入了。

如果有这方面业务,那其实任何技术都是摸爬滚打过来的,慢慢的就熟练了。

Nexus 搭建maven 私有仓库

nexus
如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。

Maven工作原理

如果构建的Maven项目本地仓库没有对应的依赖包,会去Nexus私服去下载;如果Nexus私服也没有此依赖包,就会去远程中央仓库下载依赖,Nexus私服下载成功后再下载至本地Maven库供项目引用。

以上是关于Maven搭建私有仓库(私服)的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse配置Maven私服

新功能|如何打造一个高可用多租户的企业级Maven私有仓库服务

maven私服nexus的安装

maven私服的配置使用

图文并茂做开发这么久了,还不会搭建服务器Maven私有仓库?这也太Low了吧

maven仓库--私服(Nexus的配置使用)