在java项目中我们经常需要用到maven作为构建。maven的默认公共仓库源在国外,拉取jar包速度非常慢。同时我们通常会有自己的私有项目jar包。这两个需求可以用nexus这个开源软件来解决,搭建一个maven的私有仓库。此处略去搭建nexus的过程,可以自行百度。下面讲一下maven的setting.xml配置文件、项目中pom.xml文件和nexus仓库中的对应关系。
1、nexus仓库创建。
一般我们需要创建四个仓库,分别是私有仓库Release版本、私有仓库Snapshot版本、以及公共仓库代理和全部仓库的组。
Release版本和Snapshot版本默认在nexus启动好以后就已经有了,分别是maven-releases和maven-snapshots。如果需要自建,可以单独选择。
整理nexus maven仓库、构建和pom.xml文件之间的关联_第1张图片
两种仓库都选择hosted模式,版本策略选择Release对应Release版本。Snapshot也是一样的。这两个版本的关系会和pom文件使用什么仓库有关,下面的pom.xml文件会说。
Layout policy没有强制要求可以是Permissive也可以是Strict。然后再创建一个proxy类型的仓库,用于缓存公共jar包文件。
整理nexus maven仓库、构建和pom.xml文件之间的关联_第2张图片
版本release,下面填写公共仓库地址。这里是阿里云的地址,这样国内拉取以后存一份在公司的服务器上就能加快构建速度了。
https://maven.aliyun.com/repository/public
再次创建一个组类型仓库。包含前面创建的所有仓库,这样在做构建的时候就能设置一个地址统一拉取jar包。
整理nexus maven仓库、构建和pom.xml文件之间的关联_第3张图片
类型为maven2(group)然后下面把上面创建的和系统自带的仓库全部添加到左边去。
创建一个使用规则,否则无法往私有仓库中上传jar包或其它文件。
整理nexus maven仓库、构建和pom.xml文件之间的关联_第4张图片
可以通过Filter来过滤,输入创建的仓库名称就行。这里只需要添加私有仓库,不需要添加组和公共仓库。
为了安全,单独创建一个账号用于仓库文件上传。
整理nexus maven仓库、构建和pom.xml文件之间的关联_第5张图片
下面Roles选择的时候选择刚才创建的roles就行了。其它的根据自己内容输入。到这里整个nexus仓库就算完成了。接下来设置maven的构建配置。
2、maven配置。
配置文件在maven的conf目录中settings.xml文件。
比如我这个主机是/opt/maven-3.6.3/conf/settings.xml,具体目录和maven这个软件安装的位置有关。请根据自己的路径调整。其中有几个需要添加的地方。
server标签需要添加在这对标签里面。

  
       scqcp-releases 仓库id,需要和项目pom.xml里面一致。
       maven    nexus上面创建的账号
       123456  nexus上面创建的对应密码
     
     
       scqcp-snapshots仓库id,需要和项目pom.xml里面一致。
       maven
       123456
     

然后添加拉取镜像的地址。配置在标签中

  
     maven-proxy  这个名称随便取
     central 这个是固定值与pom的机制有关系。代表所有拉取位置。
     public repo 这个名称随意
     http://maven.example.com:8081/repository/public/ 这个是上面nexus添加的地址,具体路径可以从nexus上查看。
   

整理nexus maven仓库、构建和pom.xml文件之间的关联_第6张图片
上面配置里面ip改成了域名,是为了方便管理。写成ip地址也能正常使用。
3、项目的pom.xml文件
这里定义的version内容与上面使用snapshot和releases仓库有决定关系。如下面,
1.0-SNAPSHOT 就会使用下面那个图中定义的内的仓库配置。
如果是1.0或者1.0-RELEASE就会使用内的仓库配置。
整理nexus maven仓库、构建和pom.xml文件之间的关联_第7张图片
整理nexus maven仓库、构建和pom.xml文件之间的关联_第8张图片
这里定义的两个仓库id与maven的settings.xml文件server中的id需要对应。否则会提示认证错误,代表账号密码不对无法登录到url中的仓库地址。