maven私服我相信很多公司都有,私服的好处有以下几点:
1、 节省下载资源开销。jar包(不一定是jar,也可以是其他资源)都存在私服,可以不必每次下载都去远程仓库去下载,因为有的远程仓库确实下载很慢。
2、 自定义jar包。每个公司都有自己的jar包资源,这些明显是在远程仓库搜索不到的,而搭建私服,就可以将自定义jar包放到私服,公司的同事就可以从私服下载。
3、 私服是自己的,自己的东西好管理!

1、环境安装

1.1、安装jdk

参考文章:https://blog.csdn.net/liu1160848595/article/details/102838318

1.2、安装maven

linux下安装maven步骤非常简单,总结起来就三步:下载安装包、解压、配置环境变量

  1. 下载安装包,官网下载地址:http://maven.apache.org/download.cgi
    此处我下载了当前最新版本:3.6.3
[guansheng@lgs maven]$ wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
  1. 解压安装包到指定目录
#当前用户权限不够,所以索性直接用sudo权限解压
[guansheng@lgs maven]$ sudo tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/software/maven/

可以看到解压目录下的文件结构如下:
maven解压目录结构
3. 配置环境变量
在 /etc/profile文件中加入以下代码:

MAVEN_HOME=/usr/software/maven/apache-maven-3.6.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

maven环境变量配置
其中MAVEN_HOME的值就是maven的解压之后的目录
保存文件,并运行source /etc/profile使环境变量生效

[root@lgs apache-maven-3.6.3]# source /etc/profile
  1. 检查是否安装成功
    运行mvn -v查看maven版本
[root@lgs apache-maven-3.6.3]# mvn -v

看到以下结果则证明安装成功了
maven安装成功

1.3、安装nexus

nexus工具是此次maven私服的构建工具,所以也要安装好。
nexus的安装也很简单,下载、解压、修改配置文件就可以访问了

  1. 下载nexus
    官网地址:https://www.sonatype.com/download-oss-sonatype
    linux系统下载unix版本的就可以。
    官网可以下载最新版,但是下载速度简直慢得令人发指,最后不知道到哪个角落翻到一篇文章里说用某雷下载比较快,就试了一下,果然很快,如果下载很慢可以用!
    题外话不多说,假设你的网速很快,那可以执行以下命令下载最新安装包:
[root@lgs nexus]# wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz

我是下载到本地,然后上传到服务器的:

#用rz命令上传,前提是已经安装了rz命令
[root@lgs nexus]# rz -by
  1. 解压安装包到指定文件夹
[root@lgs nexus]# tar -zxvf latest-unix.tar.gz -C /usr/software/nexus/

解压后有两个文件夹,前面那个是功能的实现,后面那个文件夹负责存储数据,也就是构件(jar包之类的资源),如下所示:
nexus解压目录
我们操作第一个文件夹即可。
3. 修改配置
如果机器够好的话,可以使用默认配置就可以了,我的服务器配置不高,所以改一下虚拟机配置:

[root@lgs bin]# vim nexus-3.21.1-01/bin/nexus.vmoptions

将启动内存和最大内存都改为1G
修改虚拟机配置

  1. 启动nexus
[root@lgs nexus-3.21.1-01]# ./bin/nexus start

此时会有一个警告,意思是不推荐用root用户启动,不过此警告不影响使用,可以不管
启动nexus
此时可以直接访问了:http://192.168.252.128:8081/
访问nexus
5. 说明

  1. Nexus默认的端口是8081,可以在sonatype-work/nexus3/etc/nexus.properties中修改
  2. 右上角那个登录会有一个默认的admin账号,初始密码保存在/usr/software/nexus/sonatype-work/nexus3/admin.password文件中,登录进去会让你重置密码。

2、搭建maven私服

2.1、说明

进入到nexus界面,点击repositories可以看到以下界面:
repositories
下面是网上摘抄的一些关于上面名词的说明:

  1. component name的一些说明:
    1)maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
    2)maven-releases:私库发行版jar
    3)maven-snapshots:私库快照(调试版本)jar
    4)maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
  2. Nexus默认的仓库类型有以下四种:
    1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库;
    2)hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库);
    3)proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径);
    4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用);
  3. Policy(策略):表示该仓库为发布(Release)版本仓库还是快照(Snapshot)版本仓库;
  4. Public Repositories下的仓库
    1)3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库,即第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去;
    2)Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
    3)Central: 用来代理maven中央仓库中发布版本构件的仓库
    4)Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
    5)Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库
    6)Releases: 内部的模块中release模块的发布仓库,用来部署管理内部的发布版本构件的宿主类型仓库;release是发布版本;
    7)Snapshots:发布内部的SNAPSHOT模块的仓库,用来部署管理内部的快照版本构件的宿主类型仓库;snapshots是快照版本,也就是不稳定版本
    所以自定义构建的仓库组代理仓库的顺序为:Releases,Snapshots,3rd party,Central。也可以使用oschina放到Central前面,下载包会更快。

2.2、构建思路

首先要明白我们从私服上拉取的jar包的来源,既然是私服,那肯定少不了自定义的jar包,这些jar包是在宿主仓库,也就是hosted类型的仓库,除此之外还有其他的jar包,需要从远程仓库下载,也就是proxy代理类型的仓库。既然来源有多个,我们为了方便,通常会创建一个group,也就是组类型的仓库,将宿主类型和代理类型的包含进去,我们只需要访问组仓库即可,至于组内是先从hosted中拉取还是先从proxy中拉取,就要看创建组仓库时候配置的属性了,下面会有介绍:
maven拉取jar包过程
为了安全性,我们还可以新建一个user共外部访问,按需分配角色。

2.3、搭建步骤

按照上面的思路,开始创建一个user和一个hosted仓库、proxy仓库和group仓库

2.3.1、创建用户

创建用户
填上必要的信息以及授权
新增账户
点击创建之后,可以在用户列表中看到新建的用户
新建用户列表

2.3.2、创建文件保存目录

创建仓库之前,可以先创建数据文件的保存目录
创建文件保存目录
同样填上必要信息
创建数据存储目录

2.3.3、创建Proxy Repository(代理仓库)

创建仓库
选择maven2(proxy)
选择maven2(proxy)
配置仓库属性
配置仓库属性
注意:
代理仓库可以建多个,用来指定多个远程仓库地址,比如除了maven仓库地址还可以指定阿里云的仓库地址,在国内的话,最好是阿里云的地址在前,其他的排后面(在组仓库里可以指定成员和其顺序)

2.3.4、创建hosted reposity(宿主仓库)

选择maven2(hosted)
选择maven2(hosted)
指定文件存储目录
指定文件存储目录

2.3.5、创建group reposity(组仓库)

选择maven2(group)
选择maven2(group)
指定组仓库成员
*组成员及顺序
仓库建完成之后,可以在Repositories列表中查看新建的仓库
新建的仓库

3、使用maven私服

以上步骤把私服的环境已经搭建好,接下来就是使用搭建好的私服。

3.1、创建maven工程

首先创建一个使用maven的工程,为了方便,我就直接用idea创建一个springboot工程
具体过程不赘述,创建好的工程如下:
mavenDemo工程

3.2、修改setting.xml

在settings.xml文件中,修改如下配置:

<!--新建一个本地仓库地址,用来测试在本地没有jar包的情况下,私服上面jar包下载情况-->
<localRepository>C:\Users\Admin\.m2\repository-demo</localRepository>
<!--nexus服务器-->
<servers>
   <server>  
       <id>nexus</id>  
       <username>lgs</username>  
       <password>lgs用户的密码</password>  
   </server>   
</servers>
<!--私服仓库镜像-->
<mirrors>
	<mirror>  
        <id>nexus</id>  
        <name>nexus repository</name>  
        <url>http://192.168.252.128:8081/repository/lgs-reposity-group/</url>  
        <mirrorOf>central</mirrorOf>  
    </mirror> 
</mirrors>

上面的私服仓库镜像的url在下面所示的位置,直接粘贴即可:
私服镜像url
修改settings.xml之后,使此文件生效,我的是idea,在切换回idea之后,配置文件已经生效,因为这份文件指定的本地仓库是新建的一个文件夹,里面是空的,所以idea在疯狂地下载springboot的一些依赖包,再进入控制台,搜索spring,可以发现私服上面也已经下载了很多依赖包了:
下载好依赖包
此时,jar包的下载功能是没问题的,但是既然是私服,那肯定是需要上传自定义jar包的,不然就意义不大了。

4、上传jar包

上传jar包之前需要将宿主仓库的上传权限打开,默认是关闭的:
打开上传权限

4.1、控制台上传

我用的是nexus3,在控制台上有jar包的上传位置(据说nexus2也有):
上传文件
上传界面:
上传jar包
测试上传所用的jar包,我是直接把我新建的springboot工程打包丢上去的。
再搜索一下上传的jar包的名字,可以看到已经上传成功了:
上传成功
点进去还可以看到详情
jar包详情
那么现在我们就在项目中引用自定义的jar包试试:
进入jar包详情
将下面的依赖引入到项目中:
jar包依赖
我就把这个jar包引用到demo项目中的,好像没规定不能在项目中引用自己打的jar包:
引用自定义jar包
可以看到,jar包已经下载下来了,而且已经加入到依赖中了:
jar包已加入依赖

4.2、命令上传

这是通过控制台直接上传jar包,也可以通过命令上传,前提是要上传的机器已经安装好了maven。

  1. 添加配置
    在maven安装目录/conf/settings.xml下添加账号密码配置:
    id是为了标识这个server,可自定义(记住,下面命令要用到)。
<server>  
     <id>lgs-nexus-releases</id>  
     <username>admin</username>  
     <password>密码</password>  
</server>
  1. 执行命令
mvn deploy:deploy-file -DgroupId=com.example -DartifactId=demo -Dversion=1.0.1 -Dpackaging=jar -Dfile=D:\STLWorkspace\workspace\mavenDemo\target\demo-0.0.1-SNAPSHOT.jar -Durl=http://192.168.252.128:8081/repository/lgs-reposity-hosted/ -DrepositoryId=lgs-nexus-releases

参数解释:
-DgroupId,-DartifactId,-Dversion三个参数对应jar包的三个参数,也就是在pom文件中依赖的时候需要的三个参数,可以自定义写
-Dpackaging:打包类型
-Dfile: jar包位置
-Durl: 私服仓库地址
-DrepositoryId: 要上传的服务id,这个id就是上面配置的server的id
上面这些参数都是和控制台里的那些选择对应好的,很容易理解。

看到以下提示就成功了:
上传成功
搜索一下,可以看到刚刚上传的1.0.1版本的jar包显示在了列表中:
命令上传成功
至此,maven私服的搭建以及使用都已完成!

Logo

更多推荐