一、相关网站:
maven官网: http://maven.apache.org/
nexus官方下载地址: https://www.sonatype.com/download-oss-sonatype
nexus3官方文档: https://help.sonatype.com/repomanager3
二、相关知识:
1、仓库可以归分为3种,本地maven仓库、私服、远程仓库(包含中央仓库或者别的远程仓库,私服其实也算)
2、依赖的坐标与路径大致对应,如log4j/log4j/1.2.25/log4j-1.2.25.jar为groupId/artifactId/version/artifiactId-version.packaging
3、本地导入maven依赖后大致是先从自己的本地仓库找相关依赖,本地没有找私服,私服没有找远程仓库;如果本地导入子工程依赖父工程,2个工程中都导入了相关依赖,优先使用本工程的(就近原则)
三、搭建私服的优点:
1、节省宽带,一个人下载所有人都可以用
2、加速构建
3、可以部署第三方构件
4、可建立内部仓库,供特定人员使用
四、搭建nexus3私服:
1、搭建nexus需要有java环境,且nexus3必须java8以上环境
2、下载压缩包,解压到自定义目录
tar -zxvf nexus-3.13.0-01-unix.tar.gz
3、cd 到相应目录的bin目录下启动nexus
./nexus start
start:在后台启动服务,不在界面上打印任何启动或者运行时信息。
run:启动服务,但是在界面上打印出启动信息以及运行时信息以及日志信息。
stop:关闭服务
status:查看nexus运行状态
restart:重启服务
force-reload:强制重载一遍配置文件,然后重启服务
此时如果报端口占用,先查看8081端口是否占用,如果占用则进入到nexus目录下的etc目录
vi nexus-default.properties
更改端口为自己指定端口即可
4、此时访问服务器加端口号即可,如果启动正常,访问不了页面,查看防火墙是否正常关闭,默认用户名和密码为admin/admin123
五、配置nexus:
1、创建一个用户:
2、点击 Repository创建
关于仓库类型,还有快照版本,按照正规一个仓库需要有快照版和发布版,但是我们自己项目用可以只创建一个发布版
Nexus的主要的仓库类型:
hosted(宿主):宿主仓库主要用于存放项目部署的构件、或者第三方构件用于提供下载
proxy(代理):代理仓库就是对远程仓库的一种代理,从远程仓库下载构件和插件然后缓存在Nexus仓库中
group(仓库组):对我们已经配置完的仓库的一种组合策略
Nexus内置仓库:
maven-central:代理中央仓库、策略为Release、只会下载和缓存中央仓库中的发布版本构件
maven-releases:策略为Release的宿主仓库、用来部署组织内部的发布版本内容。(这是发布版和下边的快照版,规定都是一个仓库配置2种仓库,但是我们实际开发中其实只有发布版仓库就可以了)
maven-snapshots:策略为Snapshot的宿主仓库、用来部署组织内部的快照版本内容
nuget-hosted:用来部署nuget构件的宿主仓库
nuget.org-proxy:代理nuget远程仓库,下载和缓冲nuget构件
nuget-group:该仓库组将nuget-hosted与nuget.org-proxy仓库聚合并通过一致的地址提供服务
maven-public:该仓库组将maven-central,maven-releases与maven-snapshots仓库聚合并通过一致的地址提供服务;该仓库将上述所有策略为Release的仓库聚合并通过一致的地址提供服务
3、把刚新建的仓库加入到仓库组中(放到组中原因是我们在客户端只需要配置相应组即可,以后有新的仓库都加到组里即可,不用客户端加入多个仓库)
到此我们的nexus就算配置完成,剩下配置客户端和开机自启;其实搭建很容易,就是一个内嵌容器的java项目启动即可
六、设置开机自启:
在/usr/lib/systemd/system目录下新建文件nexus.service,把以下内容拷贝进去改成自己的启动路径即可
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
ExecStart=/home/service/nexus/nexus-3.13.0-01/bin/nexus start #自己的启动目录
ExecStop=/home/service/nexus/nexus-3.13.0-01/bin/nexus stop #自己的启动目录
User=nexus
Restart=on-abort
[Install]
WantedBy=multi-user.target
接着执行
sudo systemctl daemon-reload #刷新配置
sudo systemctl enable nexus.service #开启开机自启
sudo systemctl start nexus.service #启动,这步如果启用可以不执行
sudo systemctl is-enabled nexus.service #查看nexus是否为开机自启
七、配置客户端:
1、配置下载,在客户端直接配置在maven的settings.xml中以后每个项目都可以用,配置在pom中只能当前项目用所以下载配置在客户端中
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
//本地仓库地址
<localRepository>E:\repository</localRepository>
<servers>
//配置自己新建的仓库id与,并配置登录名和密码,用于上传,此id要和pom文件中id一致后续介绍
<server>
<id>sevice-release</id>
<username>servicedev</username>
<password>servicedev</password>
</server>
//配置访问仓库组的id,配置用户名和密码,用于从此处下载依赖,id要与下方id一致
<server>
<id>maven-central</id>
<username>servicedev</username>
<password>servicedev</password>
</server>
</servers>
//配置镜像地址,就配置你的maven-public的地址即可
<mirrors>
<mirror>
<id>maven-central</id>
<mirrorOf>*</mirrorOf>
<name>ali cloud centrol mirror.</name>
<url>http://IP:端口/repository/maven-public/</url>
</mirror>
</mirrors>
//配置下载的地址,都配置成maven-public即可
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>maven-central</id>
<url>http://IP:端口/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-central</id>
<url>http://IP:端口/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
//开启上边的地址,与上边id一致
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
配置完此处就可以从私服上下载依赖了
2、配置上传,在项目的pom文件中配置,id一定要与settings.xml上传那块一致,这块URL配置的是自己创建的仓库地址
<distributionManagement>
<repository>
<!-- 这里的ID要和setting的id一致 -->
<id>sevice-release</id>
<url>http://IP:端口/repository/service-dev/</url>
</repository>
</distributionManagement>
接着deploy就可以上传,如果出现上传一次之后就不能再上传回到自己创建的仓库一定要把是否重复上传选择重复上传
到此整个nexus就搭建完成了