1. 为什么要搭建私有Maven仓库
废话少说,只说主要原因,我现在参与的项目各个模块都是以微服务形式进行部署的,包括权限验证模块,我之前参与过一个项目,使用的是自己封装的权限验证 starter 依赖,使用的时候引入依赖即可,前者要进行服务间的数据请求,显然是后者更好。
将 starter 打成 jar 包然后引入项目也是可行的,这样显然不够优雅(版本升级麻烦),另一种方式就是搭建一个内部的maven仓库,引入简单还能保证库的私密性。
2. 准备
首先是下载安装文件,官网 当前最新版是 nexus-3.35.0-02-unix.tar.gz
速度很慢 🐌 这里分享一下老版本 nexus-3.4.0-02-unix.tar.gz
以下内容也是根据此文件进行说明。
链接:https://pan.baidu.com/s/1S6JCDSbtnFreOHZfmj-F3Q
提取码:who9
需要Java运行环境,我当前使用的是OpenJDK11【有坑预警】:
[root@aliyun ~]# java -version openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
3. 安装、配置、启动
3.1 安装
# 解压安装文件 tar -zxvf nexus-3.4.0-02-unix.tar.gz # 将解压出来的两个文件夹 移动到 /usr/local/nexus/ 下【位置随意】 mv ./nexus-3.4.0-02/ /usr/local/nexus/ mv ./sonatype-work/ /usr/local/sonatype-work/
3.2 配置
1️⃣ 配置环境变量的方法比较多,这里统一将环境变量放在 /etc/profile.d/my_env.sh 内:
# 配置环境变量: vim /etc/profile.d/my_env.sh # 添加 NEXUS_HOME 及 bin export NEXUS_HOME=/usr/local/nexus export PATH=$PATH:$NEXUS_HOME/bin # 使得配置的环境变量立即生效: # 首先是要赋权限【只操作一次就行】 chmod +x /etc/profile.d/my_env.sh source /etc/profile.d/my_env.sh
2️⃣ 修改 $NEXUS_HOME/bin/nexus.rc 文件,将 run_as_user 配置放开,Nexus 跟很多 Linux 应用一样不推荐使用 root 用户,我们可以暂用:
# 释放并修改 run_as_user vim /usr/local/nexus/bin/nexus.rc run_as_user="root"
3️⃣ 修改 $NEXUS_HOME/etc/nexus-default.properties 的 IP 和端口:
# 修改 nexus-default.properties 的 host 和 port vim /usr/local/nexus/etc/nexus-default.properties # Jetty section application-port=8087 application-host=tcloud
4️⃣ 添加到系统服务:
ln -s $NEXUS_HOME/bin/nexus /etc/init.d/nexus
3.3 启动
# 后台启动 [root@aliyun ~]# service nexus start No suitable Java Virtual Machine could be found on your system. The version of the JVM must be at least 1.8 and at most 1.8. Please define INSTALL4J_JAVA_HOME to point to a suitable JVM. # 使用最新版本 nexus-3.35.0-02-unix.tar.gz 启动时依然报一下信息 [root@aliyun ~]# service nexus start No suitable Java Virtual Machine could be found on your system. The version of the JVM must be 1.8. Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
The version of the JVM must be at least 1.8 and at most 1.8.
这意思不就是要用 JDK1.8 嘛 😅 换用最新版本的 nexus-3.35.0-02-unix.tar.gz
启动时报:The version of the JVM must be 1.8.
实锤了,需要使用JDK1.8 😅
4. 换服务器重新安装配置启动
# 换另一台云服务器 JDK为1.8 [root@tcloud ~]# java -version java version "1.8.0_251" Java(TM) SE Runtime Environment (build 1.8.0_251-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
在新服务器上的安装过程跟前边的一样,这里省略了:
# 【再次启动】这次用前台启动 可以看日志 [root@tcloud ~]# service nexus run WARNING: ************************************************************ WARNING: Detected execution as "root" user. This is NOT recommended! WARNING: ************************************************************ Starting nexus # 省略部分日志信息【这样就是启动成功了】 ------------------------------------------------- Started Sonatype Nexus OSS 3.4.0-02 -------------------------------------------------
❗️❗️❗️【注意】
启动成功 后的运行日志文件为 /sonatype-work/nexus3/log/nexus.log
启动失败 的日志文件为 $NEXUS_HOME/nexus/hs_err_pidxxxx.log
5. 验证
默认端口是:8081,我修改成了8087,默认用户名是:admin,密码:admin123。登录前只可以查看仓库信息:
登录后才可以进行设置,比如添加代理源:
Browse 可以查看当前有多少仓库,搭建好的 Nexus,默认会带有一些maven仓库,一般使用这些仓库就足够了,当然了,我们为的不是这些,而是上传自己的依赖。
默认仓库说明【我们可以在设置->仓库里查看详情】:
- maven-central:maven中央库,默认从 https://repo1.maven.org/maven2/ 拉取Jar包。
- maven-releases:私库发行版Jar,初次安装请将Deployment policy设置为Allow redeploy。
- maven-snapshots:私库快照(调试版本)Jar
- maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml 或项目 pom.xml 中使用。
仓库类型:
- Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x默认Releases,Snapshots, Central,当然你也可以自己设置。
- Hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的Jar文件。
- 3rd party:未发布到公网的第三方jar (3.x去除了)。
- Snapshots:本地项目的快照仓库。
- Releases: 本地项目发布的正式版本。
- Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库。
- Central:中央仓库。
- Apache Snapshots:Apache专用快照仓库(3.x去除了)。
6. 总结
Nexus 的安装配置并不复杂,随后会写如何使用,感谢支持~