基于docker的maven私服搭建

it2025-01-29  14

环境准备

ubuntu 20.0操作系统

搭建nexus3 Maven私服

拉取镜像并启动容器

docker run -d --name nexus3 \ --restart=always \ -p 18081:8081 \ -v /mnt/d/dockerv/nexus3/nexus-data:/nexus-data \ sonatype/nexus3 注:1、nexus-data中的所有文件会映射到 指定的宿主机文件夹种,所以需要打开 /mnt/d/dockerv/nexus3/nexus-data 这个文件夹的权限 直接设置777 2、本地没有镜像会拉取最新的镜像 3、需要完全启动后才能访问,可通过docker logs nexus3 查看 出现Started Sonatype Nexus OSS 3.28.1-01 就是启动成功(我第一次在本地虚拟机中搭建的,浏览器访问18081发现访问不了,后来重启了一下虚拟机发现好了可以访问了,具体需要后续研究下)

相关设置

1、连接后点击登陆时会提示初始密码的位置(旧版本默认密码为admin123) /mnt/d/dockerv/nexus3/nexus-data/admin.password 查看此文件 填入密码就能登陆成功,登陆成功后会提示改新密码

Maven向私服推包与下载

推包

mvn deploy:deploy-file -Dfile="dlanqi.core.mysql-1.0.9.jar" -DgroupId="dlanqi.core.mysql" -DartifactId="dlanqi.core.mysql" -Dversion="1.0.9" -Dpackaging=jar -Durl="http://192.168.110.106:18081/repository/private-release/" -DrepositoryId="private-release" Dfile:包所在的本地路径 Durl:需要填发布的远程仓库路径 DrepositoryId:远程仓库的id

下载包(本地maven setting配置)

设置maven的settings.xml(详细说明),使本地仓库可以推送包和访问包

<?xml version="1.0" encoding="UTF-8"?> <settings> <localRepository>D:\Apache\apache-maven-3.6.3\repository</localRepository> <interactiveMode>true</interactiveMode> <offline>false</offline> <mirrors> <mirror> <id>dlanqi.core</id> <name>dlanqi maven</name> <url>http://192.168.110.106:18081/repository/private-release/</url> <mirrorOf>private-release</mirrorOf> </mirror> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!-- <mirrorOf>central</mirrorOf> --> <mirrorOf>*</mirrorOf> </mirror> </mirrors> <profiles> <profile> <id>development</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <repositories> <repository> <id>private-release</id> <url>http://192.168.44.139:18081/repository/private-release/</url> </repository> <repository> <id>private-snapshot</id> <url>http://192.168.44.139:18081/repository/private-snapshot/</url> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>development</activeProfile> </activeProfiles> <servers> <server> <id>private-release</id> <username>admin</username> <password>123456</password> </server> <server> <id>private-snapshot</id> <username>admin</username> <password>123456</password> </server> </servers> </settings> 详细说明: localRepository:本地仓库的路径 mirrors: 配置远程库 mirrors中的id为远程登陆库中的repository的id profile: 配置远程库 profile中的id为自己命名的配置id activeProfiles:激活profile中的id对应的配置 server: 远程私服的各仓库的登陆用户名和密码(用户名和密码在nexus中自己创建,并分配角色)

Nexus简介及仓库介绍

一、Nexus的作用

指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。

二、Nexus仓库

一般用到的仓库种类是hosted、proxy。Hosted代表宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动、比如商业软件jar包。Proxy代表代理远程的仓库,最典型的就是Maven官方中央仓库、JBoss仓库等等。如果构建的Maven项目本地仓库没有依赖包,那么就会去这个代理站点去下载,那么如果代理站点也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。 代理站点下载成功后再下载至本机。

hosted 类型的仓库,内部项目的发布仓库,需要添加到maven-public中 releases 内部的模块中release模块的发布仓库 snapshots 发布内部的SNAPSHOT模块的仓库 3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去 proxy 类型的仓库,从远程中央仓库中寻找数据的仓库 注:意味着可以代理阿里云的,或者其它的远程库,然后本地就不需要配置阿里云的库了,不过回把阿里云的下载到私服里占空间 group 类型的仓库,组仓库用来方便我们开发人员进行设置的仓库

最新回复(0)