引言
在Windows 10系统中搭建Maven私有库,主要涉及安装 Nexus 并进行相应配置。以下是具体步骤和方法的总结。
一、Nexus是什么?
Nexus是Sonatype公司发布的一款功能强大的仓库管理软件
,常被用来搭建Maven私服
,因此也有人将其称为‘Maven仓库管理器’。由于私服具有降低中央仓库负荷、节省外网带宽、提高项目稳定性等优点,因此在实际开发过程中得到了广泛应用。
Nexus分为开源版和专业版,其中开源版足以满足大部分个人和小型团队的需求,而专业版则提供了更多的企业级特性。作为一个强大的软件仓库,Nexus可以用来存储、共享和分发各种软件组件,如Java包、Ruby gems、Node.js包等,并且支持与Docker等容器技术的集成,提供企业级的安全性和可扩展性。因此,它被广泛用于企业级开发团队中,帮助他们更好地管理、共享和分发软件组件。此外,通过代理外部仓库、缓存构建和部署第三方构件等功能,Nexus可以显著提高开发团队的工作效率。
二、下载并安装Nexus
- 下载地址 :
-
下载完成后,解压文件到D盘(例如:D:\Nexus),解压文件 nexus-3.71.0-06-win64.zip
-
打开
命令提示符
或PowerShell
,进入Nexus的bin目录
(例如:D:\Nexus\nexus-3.37.0-02-win64\bin)。 -
运行
nexus.exe /run
启动Nexus服务。
- 现如下界面表明启动成功,默认端口为8081:
如果需要修改端口号,可在配置文件(nexus-default.properties)中修改
- 访问Nexus Web界面:
通过浏览器访问http://localhost:8081/nexus
,默认用户名和密码为admin和admin123
3.7 版本密码在文件夹 …\nexus-3.71.0-06-win64\sonatype-work\nexus3\admin.password 文件中
三、 创建Maven仓库
- 在Nexus Web界面中,点击左侧的"Repositories"。
- 点击"Create Repository",选择"Maven2"作为仓库类型。
仓库 Type 类型说明:
仓库类型 | 说明 |
---|---|
proxy | 某个远程仓库的代理 |
group | 存放:通过 Nexus 获取的第三方 jar 包 |
hosted | 存放:本团队其他开发人员部署到 Nexus 的 jar 包 |
默认仓库说明:
仓库名称 | 说明 |
---|---|
maven-central | Nexus 对 Maven 中央仓库的代理,Nexus 可以配置代理仓库来代理 Maven 中央仓库,缓存从中央仓库获取的构件,加速本地访问速度 。 |
maven-public | Nexus 默认创建,供开发人员下载使用的组仓库 ,public 仓库组通常用于聚合所有存储策略为 Release 的仓库,提供一个统一的服务地址。这样,Maven 客户端可以更方便地从这个统一地址获取所需的构件,无论是来自代理仓库还是宿主仓库 。 |
maven-releasse | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库,要求 releasse 版本 |
maven-snapshots | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库,要求 snapshots 版本 |
maven-public 相当于仓库总和,默认把其他 3 个仓库加进来一起对外提供服务了,另外,如果
有自己建的仓库
,也要加进该仓库
才有用。
- 配置以下信息:
- Repository ID:例如my-maven-repo。
- Name:例如My Maven Repository。
- URL:例如http://localhost:8081/repository/my-maven-repo/。
- Policy:选择Release或Snapshot,根据需要配置。
- 点击"Create"创建仓库。
四、配置Maven项目
1. 打开Maven项目的pom.xml文件。
2. 添加以下仓库配置:
<repositories>
<repository>
<id>my-maven-repo</id>
<url>http://localhost:8081/repository/my-maven-repo/</url>
</repository>
</repositories>
3. 打开Maven的settings.xml文件。
添加以下仓库和认证配置:
<servers>
<server>
<id>my-maven-repo</id>
<username>admin</username>
<password>你的Nexus密码</password>
</server>
</servers>
在mirrors节点下新增一个mirror节点,内容如下:
<mirror>
<id>my-maven-repo</id>
<mirrorOf>*</mirrorOf>
<name>my local maven</name>
<url>http://localhost:8081/repository/my-maven-repo/</url>
</mirror>
五、部署Maven项目到Nexus
在Maven项目的根目录下打开命令提示符或PowerShell。
运行以下命令部署项目到Nexus:
mvn clean deploy -DaltDeploymentRepository=my-maven-repo::default::http://localhost:8081/repository/my-maven-repo/
六、手动上传本地 jar 到仓库
七、Springboot 项目实战应用
1. 新建 maven 配置文件 settings_local.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">
<!-- 设置本地仓库的路径为 D:/Development/maven2/repository -->
<localRepository>D:/Development/maven2/repository</localRepository>
<!-- 插件组配置,可以指定插件查找的额外组标识符 -->
<pluginGroups>
<!-- 插件组示例,未激活 -->
<!--<pluginGroup>com.your.plugins</pluginGroup>-->
</pluginGroups>
<!-- 代理服务器配置,当前为空 -->
<proxies></proxies>
<!-- 服务器配置,用于存储需要认证的仓库信息 -->
<servers>
<!-- 定义一个服务器,id 为 my-maven-repo,包含用户名和密码 -->
<server>
<id>my-maven-repo</id>
<username>admin</username>
<password>admin@123</password>
</server>
<!-- 其他服务器配置,可能用于不同的仓库 -->
<server>
<id>maven-release</id>
<username>admin</username>
<password>admin@123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin@123</password>
</server>
</servers>
<!-- 镜像配置,用于定义远程仓库的镜像 -->
<mirrors>
<!-- 定义一个镜像,id 为 my-maven-repo,镜像所有仓库(*),使用本地仓库作为中央仓库的备份 -->
<mirror>
<id>my-maven-repo</id>
<mirrorOf>*</mirrorOf>
<name>local maven</name>
<!-- 镜像的 URL 指向本地 Nexus 仓库 -->
<url>http://localhost:8081/repository/my-maven-repo/</url>
</mirror>
<!-- 阿里云镜像,用于加速中央仓库的访问 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<!-- 阿里云镜像的 URL -->
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<!-- Maven 配置文件中的配置文件,用于定义仓库和插件仓库 -->
<profiles>
<!-- 定义一个配置文件,id 为 my-maven-repo,包含一个仓库配置 -->
<profile>
<id>my-maven-repo</id>
<repositories>
<!-- 定义一个仓库,使用本地 Nexus 仓库作为中央仓库的备份 -->
<repository>
<!-- 仓库 id 应唯一,这里与镜像 id 相同,可能需要更改 -->
<id>central</id>
<!-- 仓库 URL 指向本地 Nexus 仓库 -->
<url>http://localhost:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<!-- 激活配置文件,这里激活了本地仓库作为中央仓库备份的配置 -->
<activeProfiles>
<activeProfile>my-maven-repo</activeProfile>
</activeProfiles>
</settings>
2. 项目中修改 maven 配置
3. 项目工程 pom 文件 配置 maven
<!-- 配置Maven的分发管理,指定发布版本和快照版本的仓库 -->
<distributionManagement>
<!-- 发布版本(release)的仓库配置 -->
<repository>
<id>maven-release</id> <!-- 仓库的唯一标识符 -->
<name>maven-release</name> <!-- 仓库的名称 -->
<url>http://localhost:8081/repository/maven-release/</url> <!-- 仓库的URL地址 -->
</repository>
<!-- 快照版本(snapshot)的仓库配置 -->
<snapshotRepository>
<id>maven-snapshots</id> <!-- 快照版本的仓库唯一标识符 -->
<name>maven-snapshots</name> <!-- 快照版本的仓库名称 -->
<url>http://localhost:8081/repository/maven-snapshots/</url> <!-- 快照版本的仓库URL地址 -->
</snapshotRepository>
</distributionManagement>
<!-- 配置Maven的仓库列表,用于项目依赖的查找 -->
<repositories>
<!-- 阿里云Maven公共仓库配置,仅启用发布版本依赖的下载 -->
<repository>
<!-- 发布版本依赖的下载配置 -->
<releases>
<enabled>true</enabled> <!-- 启用发布版本依赖的下载 -->
</releases>
<!-- 快照版本依赖的下载配置,此处禁用 -->
<snapshots>
<enabled>false</enabled> <!-- 禁用快照版本依赖的下载 -->
<updatePolicy>never</updatePolicy> <!-- 更新策略设置为永不更新 -->
</snapshots>
<id>aliyunmaven</id> <!-- 仓库的唯一标识符 -->
<url>https://maven.aliyun.com/repository/public</url> <!-- 仓库的URL地址 -->
</repository>
<!-- 本地Maven私有仓库配置,同时启用发布版本和快照版本依赖的下载 -->
<repository>
<!-- 发布版本依赖的下载配置 -->
<releases>
<enabled>true</enabled> <!-- 启用发布版本依赖的下载 -->
</releases>
<!-- 快照版本依赖的下载配置,此处启用 -->
<snapshots>
<enabled>true</enabled> <!-- 启用快照版本依赖的下载 -->
</snapshots>
<id>my-maven-repo</id> <!-- 仓库的唯一标识符 -->
<url>http://localhost:8081/repository/maven-public/</url> <!-- 仓库的URL地址 -->
</repository>
</repositories>
参考:https://cloud.tencent.com/developer/article/2110916
推荐: https://developer.aliyun.com/article/1328445
https://blog.csdn.net/weixin_46228563/article/details/139567976