04.Maven学习笔记–Nexus私服搭建与核心功能
知识点概要
- 私服的使用场景
- Nexus 下载安装
- Nexus 仓库介绍
- 本地远程仓库配置
- 发布项目至 Nexus 远程仓库
- 关于 SNAPSHOT (快照) 与 RELEASE (释放) 版本说明
私服使用场景
- 公司不能连接公网,可以用一个私服务来统一连接
- 公司内部 jar 组件的共享
Nexus 下载安装
Nexus 下载地址
https://help.sonatype.com/repomanager2/download
解压并设置环境变量
#解压
unzip nexus-2.14.9-01-bundle.zip
cd /etc
#备份profile文件
tar -zcvf profile200902.tar.gz profile
#在环境变量当中设置启动用户
vim /etc/profile
#添加profile文件。安全起见不建议使用root用户,如果使用其它用户需要加相应权限
export RUN_AS_USER=root
source /etc/profile
配置启动参数
cd ${nexusBase}/conf
#备份配置文件
tar -zcvf nexus.properties.tar.gz nexus.properties
#编辑配置文件
vim nexus.properties
#端口号
application-port=8081
#启动与停止Nexus
#启动
${nexusBase}/bin/nexus start
#或进入到目录执行
cd ${nexusBase}/bin
./nexus start
#停止
${nexusBase}/bin/nexus stop
#或进入到目录执行
cd ${nexusBase}/bin
./nexus stop
登录 Nexus 界面
地址:http://{ip}:8081/nexus/
用户名:admin
密码:admin123
设置开机启动(可选步骤)
cd /etc/init.d
#复制脚本
cp {nexusBase}/bin/nexus nexus
#添加系统服务
chkconfig --add nexus
#设置启动级别为345
chkconfig --levels 345 nexus on
#查看是否添加成功
chkconfig --list|grep nexus
Nexus 仓库介绍
- 3rd party:第三方仓库。既不是本地项目,也不是 Maven 官方标准项目,比如第三方公司提供的 SDK
- Apache Snapshots:Apache 快照仓库
- Central:Maven 中央仓库
- Central M1 shadow:策略为 Releases 的虚拟仓库,用来提供中央仓库中 M1 格式的发布版本的构件(现在很少使用了)
- Releases:私有发布版本仓库
- Snapshots:私有快照版本仓库
配置 Central 仓库的 Remote Storage Location 为国内阿里云镜像:
http://maven.aliyun.com/nexus/content/groups/public
本地远程仓库配置
在 pom 中配置远程仓库
<repositories>
<repository>
<id>nexus-public</id>
<name>my nexus repository</name>
<url>http://192.168.25.159:8081/nexus/content/groups/public/</url>
</repository>
</repositories>
编译项目,可以看到 Maven 从 Nexus 私服中获取依赖包了:
或者在 settings.xml 文件中配置远程仓库镜像,效果一样,但作用范围广了。
<mirror>
<id>nexus-custom</id>
<mirrorOf>*</mirrorOf>
<name>Nexus custom</name>
<url>http://192.168.25.159:8081/nexus/content/groups/public/</url>
</mirror>
mirror 相当于一个拦截器,它会拦截 Maven 对 remote repository 的相关请求,把请求里的 remote repository地址,重定向到 mirror 里配置的地址。
没有配置 mirror:
配置 mirror:
通过 help:effective-pom
查看 Maven 使用的远程仓库
结果:
<repositories>
<repository>
<id>nexus-public</id>
<name>my nexus repository</name>
<url>http://192.168.25.159:8081/nexus/content/groups/public/</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
发布项目至 Nexus 远程仓库
在 pom 中确认项目的版本是 RELEASE 还是 SNAPSHOT
<version>1.0-SNAPSHOT</version>
<version>1.1-RELEASE</version>
在 pom 中配置仓库地址
<distributionManagement>
<repository>
<id>nexus-release</id>
<name>nexus release</name>
<url>http://192.168.25.159:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshot</id>
<name>nexus snapshot</name>
<url>http://192.168.25.159:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
查看 Nexus 中的用户:
在 setting.xml 中设置 server
<server>
<id>nexus-snapshot</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>nexus-release</id>
<username>deployment</username>
<password>deployment123</password>
</server>
注意:pom 中 repository 和 snapshotRepository 的 id 要和 server 中的 id 一一对应。
执行 deploy 命令
mvn deploy
发布成功: