centos7.6用nexus3搭建maven私服
一、环境说明
1.linux系统版本;centos7.6.1810
2.nexus3压缩包:nexus-3.20.1-01-unix.tar.gz
3.centos的jdk版本:1.8.0_271
centos7.6安装jdk教程请看:
https://blog.csdn.net/weixin_43824267/article/details/110385122
4.本地操作系统:window10
5.本地jdk版本:1.8.0_231
6.本地maven版本:apache-maven-3.6.1(必须先安装jdk才能用maven)
7.IDE工具及版本:IntelliJ IDEA 2019.1.3 x64
8.参考文章:
(1)https://www.cnblogs.com/endv/p/11204704.html
(2)https://cloud.tencent.com/developer/article/1098081
二、安装并启动nexus3
1.创建nexus3目录,传输nexus3压缩包
mkdir -p /myutil/nexus3
2.解压压缩包
cd /myutil/nexus3/
tar -zxvf nexus-3.20.1-01-unix.tar.gz
3.自定义参数(全部默认可忽略此步)
自定义nexus服务端口和上下文路径
vim /myutil/nexus3/nexus-3.20.1-01/etc/nexus-default.properties
使用root用户运行nexus
vim /myutil/nexus3/nexus-3.20.1-01/bin/nexus.rc
这里发现,不改这个文件也没什么问题。亲测只能用root用户启动nexus,其他用户无法启动。
4.有需求的话,可以自行修改JVM参数
vim /myutil/nexus3/nexus-3.20.1-01/bin/nexus.vmoptions
5.可以查看nexus的执行命令参数
/myutil/nexus3/nexus-3.20.1-01/bin/nexus
可以看到nexus命令有7个参数,重点介绍几个常用的
- start:启动nexus
- stop:停止nexus
- run:前台启动nexus(不推荐)
- status:查看nexus状态(启动或停止)
- restart:重新启动nexus
6.启动nexus
/myutil/nexus3/nexus-3.20.1-01/bin/nexus start
7.浏览器访问nexus
注意要关闭centos的防火墙喔
浏览器地址栏输入:
http://192.168.3.38:8888/nexus
- 192.168.3.38 centos主机IP
- 8888 nexus服务端口
- /nexus nexus服务上下文(根路径)
8.获取admin初始密码,并修改密码
这个版本的nexus和之前的不一样,之前版本的nexus的admin用户默认密码是admin123,这里的放在一个文件里,要自取
cat /myutil/nexus3/sonatype-work/nexus3/admin.password
初次登录admin后,要求修改密码,直接修改点下一步即可
9.解析两个文件夹:nexus-3.20.1-01、sonatype-work
nexus-3.20.1-01 安装目录
- bin 包含nexus的启动脚本和相关配置
- etc jetty、karaf等配置文件
- jre jre环境
- lib java架包库
- public 关于nexus应用在本地跑起来所需要的资源
- system 应用所有的插件和组件
- LICENSE.txt 和 NOTICE.txt 版权声明和法律细则
sonatype-work\nexus3 数据文档
- blobs/ 创建blob的默认路径,如果你指定了绝对路径,那就不在这里了
- cache/ 当前缓存的karaf包的信息
- db/ OrientDB数据库的数据,用于存储nexus的元数据的数据库
- elasticsearch / 当前配置的Elasticsearch状态
- etc/ 大概是运行时配置状态和关于资源库的自定义的相关的东西
- health-check/ 看目录,健康检查的相关报告的存储目录吧
- keystores/ 自动生成的关于资源库的ID主键
- log/ 运行实例生成的日志文件和日志文件压缩包,貌似是每天都会生成日志文件
- tmp/ 用于存储临时文件的目录
三、配置资源库
1.资源库介绍
登录到nexus服务后,可以看到nexus主要的三种:hosted、proxy、group
因为是搭建maven私服,这里就关注maven仓库。
三种仓库含义:
- hosted(宿主类型):这种类型仓库主要用于存放自己编写的jar包或是在公有远程仓库没有的第三方jar包。分为release和snapshot两种仓库。release表示发布版,是稳定的版本;snapshot表示快照版,是测试版本。
- proxy(代理类型):从远程中央仓库中寻找数据的仓库,即存放从maven公有远程仓库下载的jar。
- group(仓库组类型):这不是一个新的仓库类型,而是将多个上述两种仓库类型包含进来的一个仓库组。一般将这个组对外开放,用于开发人员从私服拉取jar包的入口。
2.创建自己的Blob
默认新建的仓库会存在defalut仓库里,这里可以自己建个blob,来存放自己创建的仓库
3.资源库创建
(1)创建hosted类型的release和snapshot仓库
同理,创建名为“lgq-snapshot”的snapshot类型仓库
(2)创建proxy类型的的中央仓库
这里推荐远程仓库设置为国内镜像,如:
http://maven.aliyun.com/nexus/content/groups/public/
https://maven.aliyun.com/repository/central
(3)创建仓库组
创建仓库组(group类型),将上述创建的3个仓库包含进来
- 应该将hosted类型的宿主资源库的顺序放在proxy类型的代理资源库之前
- 因为一个group【仓库组】中可以涵括这些宿主资源库和代理资源库。而一整个的group是作为一个public,一个接口给别人使用的。所以当查找jar包的时候,如果代理资源库在前面,那就是先从远程去查找jar,而不是先从宿主类型资源库(本地仓库)去查找是否有jar。这样访问外网的消耗比起来在本地查找更大,当然是将托管资源库放在代理资源库之前的优先位置了。
四、添加nexus用户
添加release用户,用于上传本地release类型jar包的用户帐号
同理,在创建下面几个用户
snapshot:用于上传本地snapshot类型的jar包的用户帐号
thirdparty:用于上传第三方jar包的用户帐号
public:用于连接nexus私服的用户帐号
五、配置本地maven配置文件
1.打开配置文件,将以下内容替换进去
maven配置文件默认在:maven根目录/conf/setting.xml下,拷贝前注意先备份初始版本的setting.xml。如果不想拷贝也可以将下属配置按自己实际情况添加
<?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>D:/MyUtil/maven/local-repository</localRepository>
<!--配置在nexus创建的4个用户帐密,id不要冲突-->
<servers>
<server>
<id>releaseid</id>
<username>release</username>
<password>release</password>
</server>
<server>
<id>snapshotid</id>
<username>snapshot</username>
<password>snapshot</password>
</server>
<server>
<id>publicid</id>
<username>public</username>
<password>public</password>
</server>
<server>
<id>thirdpartyid</id>
<username>thirdparty</username>
<password>thirdparty</password>
</server>
</servers>
<!--配置远程仓库,阿里云仓库,这样下载maven插件比较快-->
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
</settings>
六、配置IDE的maven设置(以idea为例)
1.创建maven工程(略)
2.设置idea的maven配置
七、测试上传项目到nexus私服
1.获取nexus私服仓库的地址
2.在需要上传到nexus私服的maven项目的pom文件加入以下配置
<!--添加到要上传的项目pom中确定上传路径开始-->
<distributionManagement>
<repository>
<id>releaseid</id>
<url>http://192.168.3.38:8888/nexus/repository/lgq-release/</url>
</repository>
<snapshotRepository>
<id>snapshotid</id>
<url>http://192.168.3.38:8888/nexus/repository/lgq-snapshot/</url>
</snapshotRepository>
</distributionManagement>
<!--添加到要上传的项目pom中确定上传路径结束-->
- 这里不建议放在父模块中,要放到具体上传的maven项目的pom文件中,避免子模块无法继承父模块的这部分标签
- url是nexus私服具体仓库的地址
3.在需要上传的maven项目的根目录下执行mvn deploy命令,或者在IDE工具运行deploy命令
4.修改版本好为RELEASE(理论上只要不是SNAPSHOT结尾即可),再次上传
八、测试打包本地jar包到maven本地仓库
1.自己准备一个jar包(小编以oracle的驱动包:ojdbc14-10.2.0.4.0.jar为例)
2.打开cmd命令,输入以下命令
前提:maven要配置好环境变量
mvn install:install-file -Dfile=D:/MyUtil/maven/ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=1.1-RELEASE -Dpackaging=jar
- mvn deploy:maven的部署命令
- -Dfile:部署的本地jar的本地路径,不能有空格、中文之类的非法字符
- -DgroupId、-DartifactId、-Dversion:maven坐标,不解释
- -Dpackaging:打包方式
九、测试上传第三方jar包到nexus私服
1.自己准备一个jar包(小编以oracle的驱动包:ojdbc14-10.2.0.4.0.jar为例)
2.打开cmd命令,输入以下命令
前提:maven要配置好环境变量
mvn deploy:deploy-file -Dfile=D:/MyUtil/maven/ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=1.2-RELEASE -Dpackaging=jar -Durl=http://192.168.3.38:8888/nexus/repository/lgq-release/ -DrepositoryId=thirdpartyid
- mvn deploy:maven的部署命令
- -Dfile:部署的本地jar的本地路径,不能有空格、中文之类的非法字符
- -DgroupId、-DartifactId、-Dversion:maven坐标,不解释
- -Dpackaging:打包方式
- -Durl:上传的nexus私服从仓库路径,这里上传到nexus的release仓库
- -DrepositoryId:上传jar包用的用户id,对应maven配置文件里server里的id,这里用nexus的thirdparty用户来上传第三方jar包
或者可以在nexus的网页端手动上传(部分nexus版本是没有这个功能的)
十、测试下载依赖
1.在需要下载依赖的maven项目的pom.xml中加入以下配置
<repositories>
<repository>
<id>publicid</id>
<url>http://192.168.3.38:8888/nexus/repository/lgq-public/</url>
</repository>
</repositories>
- url是nexus私服提供给maven项目下载依赖的接口,前面有介绍,就是那个仓库组
- 这里不建议放到父模块中,要放到具体需要下载依赖的maven项目的pom文件中,因为小编亲测发现,父模块添加下述依赖时,子模块有可能无法继承这部分标签。这样一来,就会用默认的远程仓库(或在setting.xml自己配置的阿里云仓库)去下载jar包了