简介
Maven私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件,有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库,否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
下载(version-2.x)
官网下载页:https://www.sonatype.com/download-oss-sonatype
或
链接:https://pan.baidu.com/s/1z-L29iFBD4y_i1PRMzwryA nexus-2.14.1-02-win.zip
提取码:tk3h
或
链接:https://pan.baidu.com/s/1rfeWSb6wWb3kzekNdHQkqQ nexus-3.38.0-01-win64
提取码:rwb6
安装 【在安装Nexus前我们要确保系统已经安装了JDK1.8】
- 解压安装包
nexus-2.14.1-02-win.zip
,打开命令提示符【需要以管理员身份运行cmd命令行窗口】,进入nexus-2.14.1-02-win.zip/bin
目录 -
安装命令
nexus.bat install
-
3.x 安装:
- nexus.exe /install
- 卸载命令
nexus.bat uninstall
- 方法一:进入到nexus-3.27.0-win64\nexus-3.27.0-03\bin该目录下,有个启动程序nexus.exe
- 需要注意,以管理员权限打开cmd,进到该目录下 执行启动命令:nexus.exe /run nexus
- 启动成功,使用内置jetty服务器提供web服务。
-
打开浏览器访问:http://localhost:8081/
- 1.配置运行的端口
在nexus-3.38.0-01-win64\nexus-3.38.0-01\etc目录下的nexus-default.properties文件配置访问端口 - 2.配置运行的占用内存
在nexus-3.38.0-01-win64\nexus-3.38.0-01\bin目录下的nexus.vmoptions文件配置内存 这里按照需求配置,如果电脑内存比较小,可以配置一个g
- 方法二:安装为Windos服务
以管理员身份运行CMD命令窗口
进入nexus3安装目录的bin目录下
E:\nexus-3.38.0-01-win64\nexus-3.38.0-01\bin
通过nexus.exe /install nexus3 命令,安装为名为nexus3的Windows服务
查看windows服务,并且启动nexus3
- 方法二:安装为Windos服务
- 打开服务窗口,nexus已安装,右键启动该服务
- 打开浏览器,访问:
http://localhost:8081/nexus/
- 点击右上角
Log In
,使用默认账号:admin
,密码:admin123
登录, 到这里我们就已经完成了私服的搭建。 - 用户名默认为admin
nexus3版本初始密码在nexus-3.38.0-01-win64\sonatype-work\nexus3目录下的admin.password文件里, 登陆之后后会让你修改密码,修改之后,这个文件会被删除
目前的 Nexus3 用户名 admin 的初始化密码不再是 admin123,需要在文件中去查看密码。
cat /opt/sonatype/sonatype-work/nexus3/admin.password
输出后的密码是一串 uuid,这段就是密码,不要考虑太多,直接全部复制去登陆。登录成功后会有个提示修改密码的操作,修改密码就可以了。
修改密码后一定要记住,在修改密码完成之后 admin.password ⽂件会⾃动删除。
二、Nexus修改默认端口
1、找到Nexus的配置文件nexus.properties
,Nexus根目录/conf/nexus.properties
2、更改为自定义端口
3、修改管理员账号密码
使用管理员账号登录后点击上方profile
,进入到个人信息页面即可修改密码
4、Nexus仓库类型介绍
登陆Nexus
,在左边菜单栏里选择Repositories
,repository
的类型有一下几种:
hosted
,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第三方库proxy
,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库group
,仓库组,用来合并多个hosted/proxy
仓库,当你的项目希望在多个repository
使用资源时就不需要多次引用了,只需要引用一个group
即可Nexus
预置了3个本地仓库,分别是Releases
,Snapshots
,3rd Party
Releases
:存放自己项目中发布的构建, 通常是Release
版本的Snapshots
:存放非release
版本, 非稳定版本3rd Party
: 存放第三方库
Nexus建库
Add
-->HostedRepository
然后选择
PublicRepositories
,打开configuration
选项卡,将自己创建的仓库添加到group
,如图从右侧移到左侧,点击save
保存,至此,已经成功搭建好自定义的仓库了Nexus创建账号
按图创建账号
jar包上传下载配置
- 远程仓库认证,在
settings.xml
中配置<servers>
节点<servers> <server> <id>tbsnexus</id> <username>tb-user</username> <password>P@ssw0rd</password> </server> </servers>
上述代码中配置了一个
id
为tbsnexus
的远程仓库认证信息,Maven
使用settings.xml
文件中的servers
元素及其子元素server
配置仓库认证信息,认证用户名为tb-user
,认证密码为P@ssw0rd
,这里的关键是id
元素,id
没有要求,随便定义,但是后面配置远程仓库的id
必须和这里的id
保持一致,正是这个id
将认证信息与仓库配置联系在了一起
配置远程仓库
<profiles> <profile> <id>tbsnexus</id> <repositories> <repository> <id>tb-repositories</id> <name>Repository for tb-repositories</name> <url>http://39.100.65.160:8081/nexus/content/repositories/tb-repository/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>tbsnexus</activeProfile> </activeProfiles>
配置仓库镜像
<mirror> <id>tb-repositories</id> <mirrorOf>*</mirrorOf> <url>http://39.100.65.160:8081/nexus/content/repositories/tb-repository/</url> </mirror> <!--配置阿里云Maven镜像--> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> <!--配置华为云Maven镜像--> <mirror> <id>huaweicloud</id> <mirrorOf>*</mirrorOf> <url>https://mirrors.huaweicloud.com/repository/maven/</url> </mirror>
默认的,如果本地仓库找不到依赖的构件,这时需要东西时先到
Nexus
上找,如果发现Nexus
服务关闭后,会自动到中央仓库找,至此,已经可以私服下载jar
包了上传
jar
包- 定位到要上传的
jar
包的目录 - 执行命令
mvn deploy:deploy-file -DgroupId=com.tbtech -DartifactId=tb-tools -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=tb-tools-1.0-SNAPSHOT.jar -Durl=http://39.100.65.160:8081/nexus/content/repositories/tb-repository -DrepositoryId=tbsnexus
deploy:deploy-file
表示发布独立的文件groupId
,artifactId
,version
可根据需要设定url
为Nexus
服务器中需要上传的仓库路径repositoryId
与server
的id
必须一致- 上传结果
上传成功后,我们只需在
pom.xml
中引入<dependency>
就可以下载该jar包了<dependency> <groupId>com.tbtech</groupId> <artifactId>tb-tools</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
二、本地jar包上传
1、手动方式上传jar包
在nexus界面点击左边的upload然后选择要上传的仓库
选择Jar包上传,然后完善相应信息,点击上传即可
2、使用git命令一次性上传
如果需要将Maven本地库的所有jar 一次性导入Nexus , 则使用单次导入的方式势必不太可能。
这里使用Bash脚本可以将Maven 本地库目录的所有jar , 一次性导入到Nexus中。 如果是在Windows环境中, 可以安装Git , 使用Git Bash 执行 sh 脚本。在本地maven仓库的目录下新建一个.sh文件(我创建的文件名是mavenimport.sh)mavenimport.sh需要在maven库目录下
复制以下代码: https://files.cnblogs.com/files/Fooo/mavenimport.rar?t=1693958641&download=true#!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itself explicitly so the script name is important # Get command line params while getopts ":r:u:p:" opt; do case $opt in r) REPO_URL="$OPTARG" ;; u) USERNAME="$OPTARG" ;; p) PASSWORD="$OPTARG" ;; esac done find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
在仓库目录右键打开git bash
输入以下命令 (./mavenimport.sh -u 你的nexus用户名 -p 你的nexus密码 -r http://127.0.0.1:8081/repository/my_repo/)
./mavenimport.sh -u admin -p admin123 -r http://ip:9090/repository/maven-releases/
注意调用sh的文件名、用户名、密码、ip、端口、仓库名都得根据自己的情况修改
输入之后按回车键执行即可
上传完毕之后可在仓库中查看上传的jar包
补充2点:
1、nexus内置库说明:
maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
maven-releases:私库发行版jar
maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。2、命令控制台报错:Maven Failed to deploy artifacts: status: 405 PUT
问题原因:我们的jar包上传,应该使用hosted类型的nexus仓库。
四、Maven配置 (在源码项目中使用 Maven的deploy 命令发布)
4.1 settings.xml设置
找到并打开settings.xml文件,添加私服配置:
在servers中添加如下配置
<server> <!-- 这里的id可以随意取,但是我们在pom.xml中配置的id要与此一致 --> <!-- release正式版本 --> <id>local-release</id> <username>admin</username> <password>123456</password> </server> <server> <!-- 这里的id可以随意取,但是我们在pom.xml中配置的id要与此一致 --> <!-- snapshot快照版本 --> <id>local-snapshot</id> <username>admin</username> <password>123456</password> </server> </servers>
在mirrors中添加如下配置:
<!-- 私服地址 --> <mirror> <!--This is used to direct the public snapshots repo in the profile below over to a different nexus group --> <id>local</id> <mirrorOf>*</mirrorOf>
<!-- 此处配置你的Nexus地址 --> <url>http://127.0.0.1:8082/repository/maven-public/</url> </mirror>其中mirrorOf=”*”表示将所有仓库请求地址都指向私服。
,mirrorOf=”central”表示只有从中央仓库请求的地址会被指向到新的地址,而其他的仓库请求会被忽略。
4.2 pom.xml配置
在项目中的pom.xml中添加如下配置:
<repositories> <repository> <id>nexus</id> <name>Nexus Repository</name>
<!-- 这里与settings.xml中配置的url保持一致 --> <url>http://127.0.0.1:8082/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <!--snapshots默认是关闭的,需要开启 --> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
<!-- 如下配置,如果是微服务项目,可以只加在最外层的pom.xml中,子模块只需加上面的配置即可 --> <distributionManagement> <snapshotRepository> <!-- 这里的id与settings.xml中配置的id保持一致 --> <id>local-snapshot</id> <name>LOCAL-SNAPSHOT</name> <url>http://127.0.0.1:8082/repository/maven-snapshots/</url> </snapshotRepository> <repository> <!-- 这里的id与settings.xml中配置的id保持一致 --> <id>local-release</id> <name>LOCAL-RELEASE</name> <url>http://127.0.0.1:8082/repository/maven-releases/</url> </repository> </distributionManagement> - 需要注意: server 的 id 和 repository的id 要一致。
至此,Nexus的Maven相关配置就完成了。
五、测试
加好配置后,进入对应的项目下,执行 mvn deploy,最后会出现如图所示的日志(前提是你项目能正常install):
这里我们就可以看到我们的项目已经发布到了私服。具体位置和项目的groupId有关:
如我这里的groupId是org.example,version后缀带SNAPSHOT,代表快照。会存入我们配置的maven-public仓库下,如图:
至此Nexus私服的基本搭建及Maven配置就完成了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2017-08-09 SoundManager 2 / API Demo and Code Examples