1.拉取镜像
docker pull sonatype/nexus3
2.创建容器卷并给予权限
mkdir /usr/local/docker/nexus/nexus-data -p && chmod 777 /usr/local/docker/nexus/nexus-data
3.启动容器
docker run -d -p 8081:8081 --name nexus -v /usr/local/docker/nexus/nexus-data:/nexus-data sonatype/nexus3
4.测试访问nexus
1、打开浏览器,访问 http://<host address>:8081/
2、管理员登录密码在 /usr/local/docker/nexus/nexus-data 中admin开头的文件中,将其拷贝输入即可。
3、登录之后会要求修改密码,按要求修改即可。
5.项目发布到nexus的仓库
1、首先修改maven的setting.xml文件,添加用户信息,以便jar包上传私服时进行身份认证,修改内容如下:
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>123456</password>
</server>
</servers>
id : 为nexus的仓库名称,
username : nexus用户名
password : nexus密码
2、创建maven项目,修改pom.xml
增加发布管理节点
<distributionManagement>
<snapshotRepository>
<id>maven-snapshots</id>
<name>maven-snapshots-repository</name>
<url>http://192.168.172.141:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>maven-releases</id>
<name>maven-releases-repository</name>
<url>http://192.168.172.141:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
snapshotRepository : 快照仓库
repository : 发行仓库
id : 与上面的server的id一致
name : 随便
url : 仓库地址,从nexus中可以找到
3.项目打包发布
maven会根据<version/>中是否含有SANPSHOT来选择是发布到快照仓库,还是发行版仓库
项目打包
mvn clean package -Dmaven.test.skip=true
项目发布
mvn deploy
运行完便可在nexus中看到自己的项目了
4.jar包安装到nexus私服
有时项目开发时,一些maven依赖下载不下来,一直报错。这时,可以手动下载jar包,将其安装到nexus私服,再从nexus解决依赖问题。下面以安装kaptcha为例:
mvn deploy:deploy-file -DgroupId=com.google.code.kaptcha -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar -Dfile=D:\kaptcha-2.3.2.jar -Durl=http://192.168.172.141:8081/repository/third/ -DrepositoryId=third
DgroupId : jar包的groupId
Dversion : jar包的版本
Dfile : jar包所在位置
Durl : 仓库地址
DrepositoryId : 仓库名
这里新建了名为third的第三方仓库,注意要在setting.xml增加一个server节点,配置用户名和密码。同时要将third仓库加到maven-public组中,因为第十步要依赖的是maven-public组。将 third加入maven-pulic组后,只要依赖maven-public,便可取到third中的jar包。
5.从nexus下载依赖
在pom.xml中增加如下仓库配置:
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://192.168.172.141:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://192.168.172.141:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
上面的url节点填写的都是maven-public组的url,而maven-releases,maven-snapshots,third都包含在maven-public中,所以能取到三个仓库的内容
网友评论