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>
相关推荐
忒可君27 分钟前
C# winform 报错:类型“System.Int32”的对象无法转换为类型“System.Int16”。
java·开发语言
斌斌_____42 分钟前
Spring Boot 配置文件的加载顺序
java·spring boot·后端
路在脚下@1 小时前
Spring如何处理循环依赖
java·后端·spring
一个不秃头的 程序员1 小时前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
丁总学Java1 小时前
--spring.profiles.active=prod
java·spring
上等猿2 小时前
集合stream
java
java1234_小锋2 小时前
MyBatis如何处理延迟加载?
java·开发语言
菠萝咕噜肉i2 小时前
MyBatis是什么?为什么有全自动ORM框架还是MyBatis比较受欢迎?
java·mybatis·框架·半自动
林的快手2 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
诸葛小猿2 小时前
maven的scope详解
maven·scope