使用Nexus创建maven私服

本文详细介绍Nexus私服的搭建过程、配置方法及其在企业内部的应用。包括Nexus的特性介绍、安装步骤、仓库管理、镜像配置以及如何在Maven项目中配置私服仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要创建私服?

  • 部署内部生成的第三方构件
  • 加速maven构建(国内访问中央仓库的速度你懂得。。)
  • 可以降低外网带宽,有了私服后,项目所需的依赖首先从私服获取,这样就可以避免很多重复的依赖都需要从中央仓库拉取,导致的外网带宽压力大的问题

二、nexus简介

特性:

  • 较小的内存占用(最小为28MB)
  • 拥有友好的界面
  • 支持代理仓库、宿主仓库和仓库组
  • 基于文件系统,不需要数据库
  • 界面支持组件的搜索和上传

三、nexus安装

nexus是一个典型的javaweb应用,它有两种安装包,一种是包含Jetty的Bundle包(本文使用这种方法),一种是不包含WEB容器的war包。

3.1、nexus 下载

下载地址:https://www.sonatype.com/download-oss-sonatype
根据自己系统环境来进行下载

3.2、安装和启动

将文件解压后,会有两个子文件。

  • nexus-3.14.0-04
    该目录包含了Nexus运行所需的文件,如启动脚本、依赖jar包等。
  • sonatype-work
    该目录包含了Nexus生成的配置文件、日志文件、仓库文件等。

第一个文件是必须的,第二个目录不是必须的,Nexus会在运行的时候动态创建该目录,这里也是记录了不同用户对Nexus的不同配置和存放的仓库内容。当用户需要备份Nexus的时候,需要备份sonatype-work,因为该目录包含了用户特定的内容。

启动nexus

linux系统下运行
nexus-3.14.0-04/bin文件夹的nexus提供了如下命令
nexus {start|stop|run|run-redirect|status|restart|force-reload}
我们在bin文件下使用./nexus run 启动Nexus

注意:由于我是在阿里云的ecs搭建的nexus。。忘记配8081端口的开放,耽误了点时间。。

这样就成功启动了~~
在这里插入图片描述

3.3、登录nexus

默认的Nexus访问时匿名的,匿名用户至包含了一些最基本的权限,我们需要使用管理员的方式登录。
Nexus的默认管理员的用户名/密码为:admin/admin123
记得登录后,顺手把初始密码改掉,养成好习惯哈~~

3.4、nexus内置的仓库

在这里插入图片描述
nexus内置了一些仓库,总体来看有以下几种类型(nuget的三个仓库不用理~~)

  • group-仓库组
  • hosted-宿主
  • proxy-代理

下面具体来说说这些仓库

  • maven-central 该仓库代理Maven中央仓库,会下载和缓存中央仓库中发布的构件
  • maven-releases 这个仓库用来部署组织内部的发布版本构件
  • maven-snapshots 这个仓库用来部署组织内部的快照版本构件
  • maven-public 仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

这些概念只要你使用过maven基本都不难理解,这里不做赘述。另外,还可以通过界面自己新建其他的仓库,这里也不做示范了~

3.5、maven项目中配置私服仓库

    <repositories>
        <repository>
            <id>souche</id>
            <name>artifactory</name>
            <url>https://localhost:8081/repository/public/</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>interval:2</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
        <pluginRepositories>
        <pluginRepository>
            <id>souche</id>
            <name>artifactory</name>
            <url>https://localhost:8081/repository/public/</url>
        </pluginRepository>
    </pluginRepositories>

3.6、配置镜像

我们可以配置一个镜像,将所有对构件的请求全部转发给我们搭建好的私服仓库,这个简化了配置,又统一管理了构件。

<mirrors>
	<mirror>
		<id>nexus-public</id>
		<name>nexus-public</name>
		<!--镜像仓库url-->
		<url>http://127.0.0.1:8081/repository/public/</url>
		<!--匹配所有仓库,对所有仓库的请求都会转发到我们配置好的镜像仓库里边-->
		<mirrorOf>*</mirrorOf>
	</mirror>
</mirrors>

3.7、部署构件至Nexus

1)、pom里面,distributionManagement中配置发布的snapshot快照库和release发布库的地址

    <distributionManagement>
    <!--需要发布的releases库-->
    <repository>
        <id>nexus-releases</id>
        <name>Local Nexus Repository</name>
        <url>https://127.0.0.1:8081/repository/releases/</url>
    </repository>
    <!--需要发布的快照库-->
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Local Nexus Repository</name>
            <url>https://127.0.0.1:8081/repository/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

2)、maven配置文件settings.xml中配置私服的认证

注意:认证的库的id需要和前面配置的id相同

 <servers>
 <!--releases库的认证-->
   <server>
      <id>nexus-releases</id>
      <username>sdev</username>
      <password>********</password>
    </server>
    <!--快照库的认证-->
    <server>
      <id>nexus-snapshots</id>
      <username>sdev</username>
      <password>********</password>
    </server>

  </servers>

3.8、配置一个可以发布构件的sdve用户

在这里插入图片描述
nexus默认提供了两个用户,一个是admin管理员,一个是匿名访问用户,由于我们开发的时候需要把内部的构件发布到nexus私服上,所以现在我们来创建一个拥有发布权限的用户,sdve。
1)、首先创建一个role(角色)
在这里插入图片描述

这里需要注意,我们需要给这个角色添加一些基础的权限

  • nx-repository-view-maven2-*-brower 代表对maven2开头的所有的仓库的UI访问权限
  • nx-repository-view-maven2-*-edit 代表对maven2开头的所有的仓库的构件更改的权限
  • nx-repository-view-maven2-*-read 代表对maven2开头的所有的仓库的构件拥有拉取的权限

基础的权限添加完之后,我们需要让nx-dev这个角色包含nx-anonymous这个角色

2)、创建用户
在这里插入图片描述
这里没什么难点,记得把上一步添加的角色赋给用户就完事了。

3)、在maven中配置使用这个用户来访问nexus,即可以拥有对仓库构件的访问和发布权限了。
使用mvn develop后,nexus私服中便有了我们内部的构件了~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值