【MacOS Nexus 私服搭建】

发布时间:2024年01月08日


前言

注意:本文章全部内容都是基于 MacOS M1芯片

首先我们需要明确的是为什么要搭建私服?

  • 就Java而言,搭建私服可以对Jar包和Pom文件进行统一的管理。好比快照包和正式包,包括了各种历史版本在私服上都可以有体现。
  • 有些内部保密的底层基础项目,想要在别的项目中使用但是不希望被外网访问到的情况下,私服就显得非常重要。通过我们自己定义maven的GAV坐标,将我们自己开发的项目上传到maven私服,这样其他项目直接通过引入这个项目的maven依赖就可以使用相关代码。

注意:本文章全部内容都是基于 MacOS M1芯片

一、Nexus 是什么

Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。 利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。

二、使用步骤

1. 安装Nexus

下载地址 这里博主下载的版本是 nexus-3.20.1-01
注意:此处第一次登录需要设置账号密码

(base) ?  etc nexus start // 启动
Starting nexus
(base) ?  etc 

2. 创建仓库

Maven仓库类型分为:

  • hosted 本地存储,提供本地私库功能
  • proxy 提供代理仓库,例如:代理阿里仓库
  • group 组类型,能够组合多个仓库为一个地址提供服务

Version Policy类型分为:

  • Release 正式版本,仅可以存储正式版本
  • Snapshot 快照版本,仅可以存储快照版本
  • Mixed 混合,正式版本和快照版本都可以存储

创建 curtis-maven-release 正式库(hosted+release),curtis-maven-release(hosted+snapshot)快照库。名称可以自定义,能区分正式库和快照库即可。
在这里插入图片描述

3. 设置中央仓库代理

修改中央仓库 maven-central 代理配置为aliyun仓库地址 http://maven.aliyun.com/nexus/content/groups/public/,修改之后下载依赖的速度会提升,默认的依赖比较慢。在这里插入图片描述
配置仓库都放到 maven-public 统一访问,在Maven setting文件里面设置mirror。
在这里插入图片描述

4. 项目代码 + Maven 配置文件

修改 /nexus-3.20.1-01/etc/nexus-default.properties 文件端口
在这里插入图片描述
Pom文件,这里的打包方式是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">
    <!--  maven version  -->
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
    </parent>

    <groupId>curtis.project.bms</groupId>
    <artifactId>bms-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!--  dependency manage  -->
    <dependencyManagement>
        <dependencies>

        </dependencies>
    </dependencyManagement>

    <!--  远程仓库配置  -->
    <distributionManagement>
        <repository>
            <id>curtis-maven-release</id>
            <name>curtis-maven-release</name>
            <url>http://localhost:10002/repository/curtis-maven-release/</url>
        </repository>
        <snapshotRepository>
            <id>curtis-maven-snapshot</id>
            <name>curtis-maven-snapshot</name>
            <url>http://localhost:10002/repository/curtis-maven-snapshot/</url>
        </snapshotRepository>
    </distributionManagement>

</project>

修改文件Maven配置文件 ~/.m2/settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <pluginGroups>
    <pluginGroup>org.codehaus.cargo</pluginGroup>
    <pluginGroup>org.mortbay.jetty</pluginGroup>
  </pluginGroups>

<!-- 公司库 -->
  <servers>
    <!-- 私库 -->
    <server>
      <!-- 唯一id 项目中pom中id必须一致 -->
      <id>curtis-maven-release</id>
      <!-- 账号密码为登录Nexus的账号密码 -->      
      <username>admin</username>
      <password>admin</password>
    </server>
    <server>
      <!-- 唯一id 项目中pom中id必须一致 -->
      <id>curtis-maven-snapshot</id>
      <!-- 账号密码为登录Nexus的账号密码 -->      
      <username>admin</username>
      <password>admin</password>
    </server>
  </servers>

  <mirrors>
   
    <!-- 私库  -->
    <mirror>
      <id>curtis-maven-snapshot</id>
      <name>ccurtis-maven-public</name>
      <!-- 统一访问 -->
      <url>http://localhost:10002/repository/maven-public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    
    <!-- 阿里镜像 -->
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>

5. 发布Pom包到私服

Maven deploy发布到私服
在这里插入图片描述
在这里插入图片描述
成功发布到Nexus

总结

做一件事之前首先需要考虑当前的困境,为什么要做这件事?其次就是这件事能帮忙解决什么问题?有没有更好的办法?最后才是如何去做!!

如果单纯需要修改Maven仓库的镜像,那么其实修改Maven配置文件的Setting.xml文件,添加阿里镜像即可:

<mirrors>
    <!-- 阿里镜像 -->
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>
文章来源:https://blog.csdn.net/GuoLee585/article/details/135444791
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。