Linux Nexus 安装详解

Nexus 安装

Nexus 配置

  • 修改默认端口:vim /usr/program/nexus2.11.4/conf/nexus.properties,修改该值:application-port=8081
  • 下载远程中央库的索引到服务器
    • Nexus 配置
    • 如上图标注 4 所示,把默认是 False 改为 True
    • Nexus 配置
    • 如上图 gif 所示,创建任务开始进行索引下载。需要特别提醒的是,如果你的私服是虚拟机,那得保证你分配的硬盘足够大,别像我一样吝啬只给 10 G(现在还剩下 1.9 G),结果报:设备上没有空间
  • 项目上配置链接连接私服(下面内容涉及到 maven 的基础知识,请自行私下学习):
    • 对项目独立设置:
      • 打开项目的 pom.xml 文件:
      • 添加下面内容:
        <repositories>
          <repository>
              <id>Nexus</id>
              <name>虚拟机-192.168.0.110-Nexus</name>
              <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
          </repository>
        </repositories>
    • 对全局配置进行设置:
      • 打开 maven 的 settings.xml 文件:
      • 添加下面内容:
        <mirrors>
          <mirror>
              <id>YouMeekNexus</id>
              <name>YouMeek Nexus</name>
              <mirrorOf>*</mirrorOf>
              <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
          </mirror>
        </mirrors>

本地开发的 jar 发布到 Nexus 上

  • 系统下的 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">


    <localRepository>D:\maven\my_local_repository</localRepository>

    <pluginGroups>
    </pluginGroups>

    <proxies>
    </proxies>


    <!--设置 Nexus 认证信息-->
    <servers>
        <server>
            <id>nexus-releases</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>nexus-snapshots</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>


    <!--设置 Nexus 镜像,后面只要本地没对应的以来,则到 Nexus 去找-->
    <mirrors>
        <mirror>
            <id>nexus-releases</id>
            <mirrorOf>*</mirrorOf>
            <url>http://192.168.1.73:8081/repository/maven-releases/</url>
        </mirror>
        <mirror>
            <id>nexus-snapshots</id>
            <mirrorOf>*</mirrorOf>
            <url>http://192.168.1.73:8081/repository/maven-snapshots/</url>
        </mirror>
        <mirror>
            <id>maven-aliyun</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

    <profiles>
        <profile>
            <id>nexus</id>
            <repositories>
                <repository>
                    <id>nexus-releases</id>
                    <url>http://nexus-releases</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>nexus-snapshots</id>
                    <url>http://nexus-snapshots</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus-releases</id>
                    <url>http://nexus-releases</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>nexus-snapshots</id>
                    <url>http://nexus-snapshots</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>

    <activeProfiles>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>

</settings>
  • 在开发的项目 pom.xml 上,添加这一段:
<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <url>http://192.168.1.73:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>  
        <id>nexus-snapshots</id>  
        <url>http://192.168.1.73:8081/repository/maven-snapshots/</url>  
    </snapshotRepository>  
</distributionManagement>
  • 然后在项目上执行:mvn deploy

持续集成自动构建后发布到 Nexus 上

  • 在 Maven 的 settings.xml 加上连接服务器信息:
<!--设置私库认证信息,用户名和密码我就用默认的,如果你们有权限控制的需求可以创建对应的一些账号-->  
<servers>  
    <server>  
        <id>nexus-releases</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>  
    <server>  
        <id>nexus-snapshots</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>  
</servers>  
  • 在项目的 pom.xml 文件加上:
<!-- nexus-releases nexus-snapshots 与 Maven 的配置文件 settings.xml 中 server 下的 id 对应 -->  
<distributionManagement>  
    <repository>  
        <id>nexus-releases</id>  
        <name>Nexus Releases Repository</name>  
        <url>http://192.168.0.110:8081/nexus/content/repositories/releases/</url>  
    </repository>  
    <snapshotRepository>  
        <id>nexus-snapshots</id>  
        <name>Nexus Snapshots Repository</name>  
        <url>http://192.168.0.110:8081/nexus/content/repositories/snapshots/</url>  
    </snapshotRepository>  
</distributionManagement>

Nexus 手动更新索引文件

  • 手动更新索引
    • 关闭 Nexus:/usr/program/nexus2.11.4/bin/nexus stop
    • 命令:cd /opt/sonatype-work/nexus/indexer/central-ctx
      • 删除里面默认的文件:rm -rf *
    • 访问官网索引:http://repo.maven.apache.org/maven2/.index/
      • 下载文件:nexus-maven-repository-index.gzwget http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.gz
      • 下载文件:nexus-maven-repository-index.propertieswget http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.properties
      • 下载索引解压工具:wget https://repo1.maven.org/maven2/org/apache/maven/indexer/indexer-cli/5.1.1/indexer-cli-5.1.1.jar
      • 执行解压命令(该命令执行需要4分钟左右):java -jar indexer-cli-5.1.0.jar -u nexus-maven-repository-index.gz -d ./
      • 删除解压前文件:rm -rf indexer-cli-5.1.0.jar nexus-maven-repository-index.gz nexus-maven-repository-index.properties
      • 重启服务:/usr/program/nexus2.11.4/bin/nexus start

Nexus3 功能

搜索

创建角色

创建用户

设置仓库

  • 仓库常见类型:
    • proxy,“代理”类型,代理请求官方仓库,并缓存在本地,图中maven-central即是
    • hosted,“私有”仓库,公司组织内部自由仓库,比如存储自己的jar包等,maven-releases、maven-snapshots即是
    • group,“组”,逻辑上的,可以把几个仓库划归到某个组,对外统一的地址访问,maven-public即是,它包含了另外3个
  • 仓库地址:http://192.168.1.73:8081/#admin/repository/repositories
  • 设置 maven-central 的 proxy 为官网默认地址:https://repo1.maven.org/maven2/
    • proxy 的意义:当客户端访问中央库的时候,如果 Nexus 没有该依赖,则先通过 Proxy 地址下载到 Nexus 仓库,然后客户端再从 Nexus 服务器下载到本地。
  • 一般建议新增一个 maven-aliyun 的 proxy 类型仓库,proxy 地址是:http://maven.aliyun.com/nexus/content/groups/public/
    • 然后在 maven-public 设置 Member repositories 的时候确保 maven-aliyun 排序大于 maven-central 即可。
  • 设置 maven-public,集成其他仓库:http://192.168.1.73:8081/#admin/repository/repositories:maven-public
    • 一般 Member repositories 的排序建议是:maven-releases、maven-snapshots、maven-aliyun、maven-central
  • 如果需要设置 npm 的仓库可以看这篇文章:Nexus OSS3创建npm 私服

设置 task

资料

教程来源于Github,感谢judasn大佬的无私奉献,致敬!

技术教程推荐

从0开始学架构 -〔李运华〕

玩转webpack -〔程柳锋〕

DevOps实战笔记 -〔石雪峰〕

Selenium自动化测试实战 -〔郭宏志〕

张汉东的Rust实战课 -〔张汉东〕

成为AI产品经理 -〔刘海丰〕

流程型组织15讲 -〔蒋伟良〕

React Hooks 核心原理与实战 -〔王沛〕

大型Android系统重构实战 -〔黄俊彬〕