在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中的仓库地址。
来源:oschina
链接:https://my.oschina.net/u/4385177/blog/4422986