码迷,mamicode.com
首页 > 其他好文 > 详细

整理nexus maven仓库、构建和pom.xml文件之间的关联

时间:2020-07-22 20:20:30      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:通过   私有   安装   server   它的   central   rmi   ofo   之间   

在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。如果需要自建,可以单独选择。
技术图片
两种仓库都选择hosted模式,版本策略选择Release对应Release版本。Snapshot也是一样的。这两个版本的关系会和pom文件使用什么仓库有关,下面的pom.xml文件会说。
Layout policy没有强制要求可以是Permissive也可以是Strict。然后再创建一个proxy类型的仓库,用于缓存公共jar包文件。
技术图片
版本release,下面填写公共仓库地址。这里是阿里云的地址,这样国内拉取以后存一份在公司的服务器上就能加快构建速度了。
https://maven.aliyun.com/repository/public
再次创建一个组类型仓库。包含前面创建的所有仓库,这样在做构建的时候就能设置一个地址统一拉取jar包。
技术图片
类型为maven2(group)然后下面把上面创建的和系统自带的仓库全部添加到左边去。
创建一个使用规则,否则无法往私有仓库中上传jar包或其它文件。
技术图片
可以通过Filter来过滤,输入创建的仓库名称就行。这里只需要添加私有仓库,不需要添加组和公共仓库。
为了安全,单独创建一个账号用于仓库文件上传。
技术图片
下面Roles选择的时候选择刚才创建的roles就行了。其它的根据自己内容输入。到这里整个nexus仓库就算完成了。接下来设置maven的构建配置。
2、maven配置。
配置文件在maven的conf目录中settings.xml文件。
比如我这个主机是/opt/maven-3.6.3/conf/settings.xml,具体目录和maven这个软件安装的位置有关。请根据自己的路径调整。其中有几个需要添加的地方。
server标签需要添加在<servers></servers>这对标签里面。

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

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

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

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

整理nexus maven仓库、构建和pom.xml文件之间的关联

标签:通过   私有   安装   server   它的   central   rmi   ofo   之间   

原文地址:https://blog.51cto.com/denwork/2512561

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!