nexus全网最详细手把手教程
- 世界杯开幕式
- 2025-12-29 13:52:31
- 6440
1、nexus介绍
1、简介
【maven私服】,用于为公司提供私有服务的软件。
它是Sonatype公司的一个产品,叫Nexus,它是Maven的私服。事实上有三种专门的Maven仓库管理软件可以帮助我们创建私服,有Apache的Archiva;JFrog的Artifactory和Sonatype的Nexus。其中Archiva是开源的,Artifactory和Nexus的核心也是开源的。这里我们重点介绍Sonatype公司的Nexus。
2、安装nexus
基于Docker version 20.10.23安装
1、拉取镜像(无需操作)
安装版本:3.36.0
2、创建映射路径
创建如下目录:
同时为目录data授权:
chmod 777 data
3、启动nexus
docker run -d --name nexus3 -p 8081:8081 --restart always -v /usr/local/docker/nexus/data:/nexus-data sonatype/nexus3:3.36.0
4、访问nexus
http://192.168.1.173:8081/ 自己的ip+8081
5、查看登录密码
输出data下的admin.password,里面是admin的密码。
【用户名:admin 密码:复制上面的密码】
【点击:Next】
【点击:Finish】
6、设置仓库
1.创建代理仓库
用来代理aliyun仓库
【3.】
http://maven.aliyun.com/nexus/content/groups/public/ 将该地址填写到上面的红框里。
【下拉到最后:点击Create repository】
2.创建本地快照仓库
3.创建发布版仓库
4.创建仓库组
7、修改配置文件
修改maven的setting.xml文件
两个server的id对应了配置的两个hosted仓库名称
【执行一下jenkins,验证一下修改完ali镜像仓库了,原来的流水线代码是否可行】
【注意】
将原来流水线代码产生的文件都清空,在执行本次流水线代码。
8、介绍maven仓库jar类型
1、快照版
快照版jar是正在开发中的,没有经过大量测试的,是临时用的jar。每次提交jar到nexus会生成一个新的快照,而版本号不会改变,引入依赖时会自动引入最新的快照版本。
2、发布版
经过大量测试,已经完成全流程的jar。这个jar是稳定的,放心引用的。
3、本地开发环境配置
1、项目的pom文件配置
2、修改当前工作空间下的maven引用
修改本地仓库maven的setting文件,配置方式和虚拟机中相同。【虚拟机中的setting文件修改了啥,本地仓库的setting文件也要改啥】
如果不修改本地仓库的配置文件,连接不到自己的私服,无法拉取私服中自己上传的jar。
根据路径找的setting文件后,进行修改。
3、修改本地项目打包插件,同时git提交到gitee仓库里:
#更换一下项目中的打包插件,同时 上传到gitee仓库里。
4、Jenkins上传jar到nexus
1、流水线代码
node {
stage('pull code'){
git branch: 'master', credentialsId: '9a19cd80-bb02-4e8b-b126-f023bdebea7b', url: 'https://gitee.com/wztsl/dz12-demo01.git'
}
stage('compile'){
dir('/var/lib/jenkins/workspace/jar_demo01'){
sh 'mvn clean install'
}
}
stage('upload jar'){
sh "mvn deploy:deploy-file \
-DgroupId=com.jr \
-DartifactId=testNginx \
-Dversion=1.0-SNAPSHOT \
-Dpackaging=jar \
-Dfile=/var/lib/jenkins/workspace/jenkinsDemo1/target/testNginx-1.0-SNAPSHOT.jar \
-Dsources=/var/lib/jenkins/workspace/jenkinsDemo1/target/testNginx-1.0-SNAPSHOT-sources.jar \
-DpomFile=/usr/local/maven/apache-maven-3.3.9/repository/com/jr/testNginx/1.0-SNAPSHOT/testNginx-1.0-SNAPSHOT.pom \
-DrepositoryId=dz14_SNAPSHOT \
-Durl=http://192.168.43.8:8081/repository/dz14_SNAPSHOT/"
}
}
配置共有9项,4+3+2
4个工程自己的配置,这四个对应了pom.xml文件中的配置
-DgroupId
-DartifactId
-Dversion
-Dpackaging(是包的类型,基本都会配置成jar,少数会配置成pom。jar就是一个依赖的jar包,pom是做依赖传递的)
3个要上传的文件
-Dfile:jar包
-Dsources:源码jar包
-DpomFile:.pom文件,做依赖传递
2个私服仓库配置
-DrepositoryId:仓库名称
-Durl:仓库地址
【前4个元素值:】
【中间3个元素值:】
【后面2个元素值:】
【最后执行流水线代码前,先删除掉之前产生的文件代码,就可以执行成功了】
第一阶段:从git下载代码
stage('pull code'){
git branch: 'master', credentialsId: '9a19cd80-bb02-4e8b-b126-f023bdebea7b', url: 'https://gitee.com/wztsl/dz12-demo01.git'
}
第二阶段:maven打包
由于最开始用来阿里云镜像,导致和私服产生了冲突,如果不配置私服时可以打包成功,配置私服就失败,可以把本地仓库中的jar删除,重新在私服下拉取依赖。
stage('compile'){
dir('/var/lib/jenkins/workspace/jar_demo01'){
sh 'mvn clean install'
}
}
#更换一下项目中的打包插件,同时 上传到gitee仓库里。
第三阶段:上传nexus
注意:Dfile和Dsources不能用本地仓库中的,要用代码下target下的jar。如果用本地仓库会导致自己替换自己的问题,出现报错,无法上传。
stage('upload jar'){
sh "mvn deploy:deploy-file \
-DgroupId=com.jr \
-DartifactId=testNginx \
-Dversion=1.0-SNAPSHOT \
-Dpackaging=jar \
-Dfile=/var/lib/jenkins/workspace/jenkinsDemo1/target/testNginx-1.0-SNAPSHOT.jar \
-Dsources=/var/lib/jenkins/workspace/jenkinsDemo1/target/testNginx-1.0-SNAPSHOT-sources.jar \
-DpomFile=/usr/local/maven/apache-maven-3.3.9/repository/com/jr/testNginx/1.0-SNAPSHOT/testNginx-1.0-SNAPSHOT.pom \
-DrepositoryId=dz14_SNAPSHOT \
-Durl=http://192.168.43.8:8081/repository/dz14_SNAPSHOT/"
}
g=jar
-Dfile=/var/lib/jenkins/workspace/jenkinsDemo1/target/testNginx-1.0-SNAPSHOT.jar
-Dsources=/var/lib/jenkins/workspace/jenkinsDemo1/target/testNginx-1.0-SNAPSHOT-sources.jar
-DpomFile=/usr/local/maven/apache-maven-3.3.9/repository/com/jr/testNginx/1.0-SNAPSHOT/testNginx-1.0-SNAPSHOT.pom
-DrepositoryId=dz14_SNAPSHOT
-Durl=http://192.168.43.8:8081/repository/dz14_SNAPSHOT/"
}