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>
相关推荐
武子康5 分钟前
Java-71 深入浅出 RPC Dubbo 上手 父工程配置编写 附详细POM与代码
java·分布式·程序人生·spring·微服务·rpc·dubbo
武子康2 小时前
Java-72 深入浅出 RPC Dubbo 上手 生产者模块详解
java·spring boot·分布式·后端·rpc·dubbo·nio
_殊途3 小时前
《Java HashMap底层原理全解析(源码+性能+面试)》
java·数据结构·算法
椰椰椰耶4 小时前
【Spring】拦截器详解
java·后端·spring
没有bug.的程序员5 小时前
JAVA面试宝典 - 《MyBatis 进阶:插件开发与二级缓存》
java·面试·mybatis
没有羊的王K6 小时前
SSM框架学习——day1
java·学习
又菜又爱coding6 小时前
安装Keycloak并启动服务(macOS)
java·keycloak
不知道叫什么呀6 小时前
【C】vector和array的区别
java·c语言·开发语言·aigc
wan_da_ren7 小时前
JVM监控及诊断工具-GUI篇
java·开发语言·jvm·后端
cui_hao_nan7 小时前
JAVA并发——什么是Java的原子性、可见性和有序性
java·开发语言