Nexus 为 IDEA 提供 Jar 包私服介绍
每个公司根据自身的需要,必然有自己研发的 jar 包,需要在项目之间共享使用。对于企业级项目来说,需要引用的 jar 包数量庞大,而且 jar 包也会不断更新,因此开发人员绝对不可能互相拷贝 jar 包来使用,这样就会造成项目管理和维护上的沉重负担。
使用 Nexus 作为私服就能够很好的解决上述问题,不但可以集中管理公司自己研发的所有 jar 包,也可以代理下载中央仓库的 jar 包。本篇博客使用上篇博客中搭建的 2 台虚拟机作为演示环境,介绍如何对 IDEA 进行配置来使用 Nexus 私服。
一、创建自己的私服仓库
Nexus 提供了 3 种类型的仓库:
- 宿主仓库(hosted):主要存放公司自主研发的 jar 包,或者从第三方购买的具有版权的 jar 包
- 代理仓库(proxy):代理连接远程官方的中央仓库,或者第三方的中央仓库(如阿里云的中央仓库)
- 仓库组(group):主要作用是将代理仓库和/或宿主仓库编组,为项目提供一个统一的 jar 包下载地址
下面我们使用上篇博客搭建的虚拟机环境,在 Nexus 上创建自己的仓库:2 个 hosted 仓库,1 个 group 仓库。
在 Win10 上打开浏览器,访问 http://192.168.6.111:8081 并登录 Nexus 私服网站。
如下图所示,依次点击【齿轮】-->【Respositories】-->【Create repository】进入创建仓库的操作界面。
在创建仓库的界面下方列表,选择 maven2(hosted)进入下一个界面:
对于 java 项目来说,业界主要使用的是两种版本:Snapshot 和 Release ,因此采用上面的操作步骤,我们创建 2 个 hosted 仓库,这里分别命名为 Jobs-Snapshot 和 Jobs-Release 。
对于 group 仓库的创建来说,主要有两个不同的地方:
第一个不同是在创建仓库类型的列表中选择 maven2(group)
第二个不同是在创建界面中,version policy 选择 Mixed(混合仓库的意思,表示既包含 Snapshot 也包含 Release)
需要注意的是:我们自己创建的 group 仓库,在最下面的需要把 maven-central(中央仓库)以及我们自己创建的 2 个 hosted 仓库进行编组。
我们自己创建好的 3 个仓库的效果如下所示:
分别点击我们创建好的 3 个仓库,就能够看到 3 个仓库的地址:
Jobs-Group 的地址:http://192.168.6.111:8081/repository/Jobs-Group/
Jobs-Release 的地址:http://192.168.6.111:8081/repository/Jobs-Release/
Jobs-Snapshot 的地址:http://192.168.6.111:8081/repository/Jobs-Snapshot/
由于 maven-central 这个中央仓库的地址是国外的地址,访问速度会比较慢,因此我们需要替换成国内的阿里云的中央仓库地址。想要了解阿里云所有的仓库地址,可以访问这个网址:https://developer.aliyun.com/mvn/guide
阿里云的中央仓库地址为:https://maven.aliyun.com/repository/central
进入 maven-central 的界面,在 Remote Storage 下面的文本框中设置为阿里云的中央仓库地址,如下图所示:
二、本地 Maven 配置
IDEA 是通过本地的 Maven 与 Nexus 进行通信,向我们创建的 2 个 hosted 仓库上传 jar 包,以及从 group 仓库中下载 jar 包的。由于我懒得安装独立的 maven 了,因此就直接使用 IDEA 自带的 maven 插件,对其进行配置。
我的 IDEA 安装的路径是 C:\IDEA ,因此其自带的 maven 配置文件地址为:C:\IDEA\plugins\maven\lib\maven3\conf\settings.xml
对 maven 的 settings.xml 文件配置两个地方:
一、配置 maven 向 Nexus 上传 jar 包的 hosted 仓库,以及账号密码,如下所示:
<servers> <server> <!--hosted 仓库的名称--> <id>Jobs-Snapshot</id> <!--访问 Nexus 的账号--> <username>admin</username> <!--访问 Nexus 的密码--> <password>admin</password> </server> <server> <id>Jobs-Release</id> <username>admin</username> <password>admin</password> </server> </servers>
二、配置 maven 从 Nexus 下载 jar 包的 group 地址,以及让 maven 通过 Nexus 进行所有 jar 包的下载
<mirrors> <mirror> <!--group 仓库的名称--> <id>Jobs-Group</id> <!--镜像名称,该配置可以删除--> <name>Nexus私服</name> <!--group 仓库的地址--> <url>http://192.168.6.111:8081/repository/Jobs-Group/</url> <!--此处配置为星号(*),表示 maven 下载所有 jar 包,都必须通过 Nexus 上面配置的 group 仓库地址--> <mirrorOf>*</mirrorOf> </mirror> </mirrors>
三、IDEA 的 Pom 文件配置
我使用之前博客的一个 java 项目进行了简化改造,其项目结构如下所示:
打开 springcloud_nexus 的根 pom 文件,在其最下面配置 Snapshot 和 Release 上传 jar 包的仓库地址即可。完整的 pom 文件内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jobs</groupId> <artifactId>springcloud_nexus</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>eureka_app</module> <module>provider_app</module> <module>consumer_app</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <!--spring boot--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> </parent> <!--Spring Cloud--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR12</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!--新增加的配置--> <distributionManagement> <!--配置 snapshot 版本的 jar 包上传的目标仓库和地址--> <snapshotRepository> <id>Jobs-Snapshot</id> <url>http://192.168.6.111:8081/repository/Jobs-Snapshot/</url> </snapshotRepository> <!--配置 release 版本的 jar 包上传的目标仓库和地址--> <repository> <id>Jobs-Release</id> <url>http://192.168.6.111:8081/repository/Jobs-Release/</url> </repository> </distributionManagement> </project>
完成以上配置之后,就可以把 Snapshot 版本和 Release 版本的 jar 包,通过 maven 的 deploy 命令上传到所配置的仓库了。
打开 springcloud_nexus 项目下所有的 pom 文件(一共 4 个 pom 文件),可以发现当前 version 配置节的值都是 1.0-SNAPSHOT(字符是不区分大小写的)。然后双击 deploy 命令,等待最终的 build success 即可。
然后进入 Nexus 的浏览页面中,点击查看 Jobs-Snapshot 仓库中的内容。
就可以看到 springcloud_nexus 项目的 Snapshot 版本的 jar 包,上传到了 Jobs-Snapshot 仓库中了。
同理,可以 springcloud_nexus 项目下所有的 pom 文件(一共 4 个 pom 文件),将其 version 配置节都修改为 1.0-RELEASE,在双击 deploy 命令,build success 之后,就可以在 Job-Release 仓库下看到所发布的 jar 包了。
选择具体的 jar 包后,可以通过右侧的 Delete component 按钮进行删除。
有关 jar 包下载,这里就不再演示了,只要你在项目的 pom 文件中增加了新的 jar 包坐标,刷新一下 maven 即可从 Nexus 下载 jar 包,如果 Jobs-Group 仓库中没有的话,第一次会连接远程的中央仓库去下载,后续就可以直接从 Nexus 下载了。
OK,有关 Nexus 为 IDEA 提供私服代理的简单介绍到此为止,下面是 Demo 的源代码地址:
https://files.cnblogs.com/files/blogs/699532/springcloud_nexus.zip
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-04-01 Spring 采用纯注解使用 RedisTemplate