Nexus的Maven私有仓库搭建

Nexus的maven私有仓库搭建

一、了解 maven仓库设置

默认设置

其中:

  • maven-central: 预定义的代理Maven Central仓库,它包含了大量的开源Java依赖包。
  • maven-public: 存储库是一个组合存储库,它包含了maven-releases和maven-snapshots存储库的内容。在Maven项目中使用Nexus 3作为私有仓库时,可以将maven-public存储库配置为Maven项目的主要仓库。
  • maven-releases: 存储库用于存储已经发布的Maven依赖包,我们可以设置为需要登录才可以访问,并发布一些团队的工具包等。
  • maven-snapshots: 存储库用于存储快照版本的Maven依赖包,一般快照包,我们在开发过程中频繁更改或更新。

但是官方默认是maven2的版本,我们可以删除并添加自己的maven3仓库。

二、新建数据存储

选择file文件存储,并自定义名称

进入相对路径下查看文件夹是否创建成功

三、创建镜像maven3仓库

创建maven3仓库,create repository创建maven-central:

创建maven3(proxy),选择镜像中心,这里选择的是阿里云的镜像

其他的仓库:

创建maven Group进行归纳镜像仓库 maven-public,并把刚才建立的仓库加入:

接下来创建release和snapshot的私有库(maven-hosted):

  • 区分release和snapshot的话,使用version policy进行区分

在group中进行导入

四、本地地址接入

复制地址:

假设,你复制的URL为:

复制代码
http://nexus.example.com/repository/maven_public/

那么,你可以在项目的pom.xml内直接添加我们的仓库地址:

复制代码
<repositories>
  <repository>
    <!-- ID可以自定义,但是要全局唯一 -->
    <id>nexus_public</id>
    <url>http://nexus.example.com/repository/maven_public/</url>
  </repository>
</repositories>

使用maven的插件进行构建(如:mvn clean、mvn install),再添加pluginRepository节点:

复制代码
<pluginRepositories>
    <pluginRepository>
        <!-- ID可以自定义,但是要全局唯一 -->
        <id>nexus_public</id>
        <name>mirror_from_nexus</name>
        <url>https://nexus.pluviose.eu.org/repository/maven_public/</url>
    </pluginRepository>
</pluginRepositories>

这样,在maven进行项目依赖包下载时候,会优先到repositories内寻找,找不到,再到全局settings.xml内寻找;所以,你也可以在全局setting.xml内添加上述操作。

当然,在全局内操作,很多人会直接重定向mirror:

复制代码
<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
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>E:\myDataBase_maven_aliyun</localRepository>
  <mirrors>
    <mirror>
      <id>maven_public</id>
      <name>maven_public</name>
      <url>http://ip/repository/maven_public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>

pom文件打上坐标,重新构建maven

Nexus上也上传了项目jar包

私有仓库发布

Nexus上定义release和snapshot之后,需要对releasesnapshot有读写权限的用户

管理员默认拥有全部权限

在本地maven的全局配置settings.xml内,添加用户的密码:

复制代码
<servers>
    <server>
        <id>nexus_release</id>
        <username>admin</username>
        <password>passwordForAdmin</password>
    </server>
</servers>

注意id相互对应

在项目的pom.xml内,配置上对应的release:

复制代码
<distributionManagement>
    <repository>
        <id>nexus_release</id>
        <url>http://nexus.example.com/repository/maven_release/</url>
    </repository>
</distributionManagement>
        <id>nexus_release</id>
        <url>http://nexus.example.com/repository/maven_release/</url>
    </repository>
</distributionManagement>
相关推荐
invicinble2 小时前
这里对java的知识体系做一个全域的介绍
java·开发语言·python
wbs_scy2 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·开发语言
ss2732 小时前
食谱推荐系统功能测试如何写?
java·数据库·spring boot·功能测试
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
try2find3 小时前
打印ascii码报错问题
java·linux·前端
014-code3 小时前
CompletableFuture 实战模板(超时、组合、异常链处理)
java·数据库
Nicander3 小时前
多数据源下@transcation事务踩坑
java·后端
それども4 小时前
DELETE 和 TRUNCATE TABLE区别
java·数据库·mysql
sjsjsbbsbsn5 小时前
大模型核心知识总结
java·人工智能·后端
白晨并不是很能熬夜6 小时前
【PRC】第 2 篇:Netty 通信层 — NIO 模型 + 自定义协议 + 心跳
java·开发语言·后端·面试·rpc·php·nio