搭建Nexus(Maven私服)

目录
  1. Nexus
    1. 下载Nexus并启动
    2. 创建宿主仓库、代理仓库、仓库组
    3. 索引、搜索构件
    4. 从Nexus私服的代理仓库中下载构件(2种方式)
    5. 部署构件到Nexus私服的宿主仓库中(2种方式)
    6. Nexus2.x迁移到3.x
    7. Nexus离线更新中央仓库索引(仅支持Nexus2.x)
Maven私服
  如果公司不提供外网给开发员,则不能访问maven的远程仓库。解决:在局域网中找一台有外网权限的电脑,搭建Maven私服(特殊的远程仓库,用来代理外部的远程仓库),开发员通过这台电脑访问Maven远程仓库(一些无法从外部仓库下载到的构件,可以从本地上传到私服供其他人使用)。
  当局域网内的开发员需要某个构件时:首先从本地仓库中寻找,如果没找到则从Maven私服中寻找下载到本地仓库,如果还没找到则从外部远程仓库寻找并下载到Maven私服,如果还没找到在则Maven直接报错。
  优势:
    1. 节省外网带宽
      消除对外部远程仓库的大量重复请求(会消耗很大量的带宽),降低外网带宽压力。
    2. 下载速度更快
      Maven私服位于局域网内,从私服下载构建更快更稳定。
    3. 便于部署第三方构件
      有些构件无法从任何一个远程仓库中获得(如:公司或组织内部的私有构件、Oracle的JDBC驱动等),建立私服之后,就可以将这些构件部署到私服中,供内部Maven项目使用。
    4. 提高项目的稳定性,增强对项目的控制
      如果不建立私服,那么Maven项目的构件就高度依赖外部的远程仓库,若外部网络不稳定,则项目的构建过程也会变得不稳定。建立私服后,即使外部网络状况不佳甚至中断,只要私服中已经缓存了所需的构件,Maven也能够正常运行。
      私服软件(如:Nexus)提供了很多控制功能(如:权限管理、RELEASE/SNAPSHOT版本控制等),可以对仓库进行一些更加高级的控制。
    5. 降低中央仓库得负荷压力
      由于私服会缓存中央仓库得构件,避免了很多对中央仓库的重复下载,降低了中央仓库的负荷。
  Maven仓库管理器(即 帮助用户建立Maven私服的软件)主要有3种:
    1. Apache的Archiva
    2. JFrog的Artifactory
    3. Sonatype的Nexus(当前最流行、使用最广泛)

1. Nexus

全称:Nexus Repository Manager(Nexus仓库管理器)
极大地简化了内部仓库的维护和外部仓库的访问。常用来搭建(公司或组织内的)Maven私服,代理所有的远程仓库(包括中央仓库),Maven项目通过Nexus私服获取和管理所有所需的Maven构件。

Nexus分为:
  1. 开源版(足以满足大部分Maven用户的需求)
    优点:
      1. 占用内存小(28 M 左右)
      2. 具有基于 ExtJs 的操作界面(用户体验较好)
      3. 使用基于 Restlet 的完全 REST API
      4. 支持代理仓库、宿主仓库和仓库组
      5. 基于文件系统,不需要依赖数据库
      6. 支持仓库管理
      7. 支持构件搜索
      8. 支持在界面上上传构件
  2. 专业版(需要付费,包含了一些企业级的高级特性)

Nexus分为(按版本):
  1. 2.x版本(使用最多,运行最稳定) 
  2. 3.x版本(支持更多的仓库格式、优化了用户的使用界面、更加强大的搜索功能等) 
  1. 下载Nexus并启动

下载开源版Nexus,放到Library目录下

1. 下载Nexus,目录说明:
    1. nexus-xxx目录:包含了Nexus运行所需要的文件(如:启动脚本、依赖jar包),在nexus/conf/nexus.properties中可以修改端口信息以及工作区的路径。
      1. bin目录
        存放:启动命令、关闭命令。  
      2. conf目录
        存放:配置文件(管理仓库列表、日志配置、安全设置)。
      3. lib目录
        存放:Nexus的库文件(Nexus运行时需要的jar包所在的目录)。
      4. logs目录
        存放:日志文件。
      5. nexus目录
        存放:Nexus应用程序。
      6. tmp目录
        存放:Nexus运行时产生的临时文件。
      7. LICENSE.txt、NOTICE.txt
    2. sonatype-work目录:包含了Nexus生成的配置文件、日志文件。包含所有由Nexus存储和管理的仓库,组件和其他数据。

2. 启动Nexus(MAC)
  在终端执行命令启动Nexus:/Library/nexus3.1/nexus-3.10.0-04/bin/nexus start
  修改环境变量后,可以直接使用命令:nexus start启动
    vi ~/.bash_profile
        export NEXUS_PATH=/Library/nexus3.1/nexus-3.10.0-04/bin
        export PATH=$PATH:$MAVEN_PATH/bin:$NEXUS_PATH
    source ~/.bash_profile

2. 启动Nexus(Windows)
  3.x版本:在/Library/nexus3.1/nexus-3.10.0-04/bin目录下,执行nexus /run命令。
  2.x版本:进入nexus-xxx/bin/jsw目录下,根据操作系统版本选择合适的目录:
    1. console-nexus.bat:启动Nexus,并在DOS命令行中展示启动过程。
    2. install-nexus.bat:将Nexus安装为Windows服务,开机自动启动。
    3. start-nexus.bat:启动Nexus。
    4. stops-nexus.bat:停止Nexus。
    5. uninstall-nexus.bat:与install-nexus.bat相对应,负责卸载Nexus开机自启动服务。
    双击运行install-nexus.bat安装Nexus服务,然后运行start-nexus.bat启动服务(如果拒绝访问时则以管理员身份运行)。

3. 在浏览器中输入http://127.0.0.1:8081检验是否启动成功(点击登陆,账号admin、密码:2.x的密码为admin123;3.x的密码在nexus安装目录/sonatype-work/nexus3/admin.password文件中,重新设置密码后该文件会被销毁)。
  点击左侧栏的Repositories查看Nexus内置仓库列表:
    1. maven-central仓库:用来代理Maven中央仓库,其仓库类型为proxy,其策略为Release(只会下载和缓存中央仓库中的发布版本的构件)。
    2. maven-releases仓库:策略为Release的宿主仓库(用来部署公司或组织内部的发布版本构件)。
    3. maven-snapshots仓库:策略为Snapshot的宿主仓库(用来部署公司或组织内部的快照版本构件)。
    4. maven-public仓库组:将上述所有存储策略为Release的仓库聚合并通过统一的地址提供服务。
  每个仓库都具有一系列属性:
    1. Type(仓库类型 4种)
      Maven可以直接从宿主仓库中下载构件。
      Maven也可以从代理仓库中下载构件(代理仓库会从远程仓库下载并缓存构件)。
      Maven还可以从仓库组中下载构件(仓库组会从其包含的宿主仓库和代理仓库中获取构件)。
      1. group(仓库组)
        用来聚合代理仓库和宿主仓库,并提供统一的服务地址。
      2. hosted(宿主仓库/本地仓库)
        用来部署本地项目所产生的构件。
        存储公司或组织内部的构件,以及一些无法从公共仓库获取的第三方构件(如:JDBC 驱动)。
      3. proxy(代理仓库)
        用来代理远程公共仓库(如:代理Maven中央仓库、代理JBoss远程仓库)
      4. virtual(虚拟仓库)
    2. Format(仓库格式)
      一般默认选择Maven2
    3. Policy(仓库的部署策略 2种)
      Release发布版本仓库、Snapshot快照版本仓库。
    4. Repository Status(仓库状态)
    5. Repository Path(仓库路径)
Nexus未登陆的界面

Nexus登陆后的界面

Nexus仓库分类
  1. 创建宿主仓库、代理仓库、仓库组
创建宿主仓库
  1. 点击左侧栏的Repositories。
  2. 点击仓库列表上方的Add...或Create repository按钮,在下拉菜单中选择Hosted Repository。
  3. 在宿主仓库配置界面,填写对应信息,然后点击Save按钮进行保存,在仓库列表中可看到新创建的宿主仓库。
    1. Repository ID(仓库ID)
    2. Repository Name(仓库名称)
    3. Repository Type(仓库类型)
    4. Provider(仓库格式)
    5. Repository Policy(仓库策略)
    6. Default Local Storage Location(仓库默认存储目录)
    7. Override Local Storage Location(自定义仓库存储目录)
    8. Deployment Policy(仓库的部署策略)
    9. Allow File Browsing(用来控制是否允许浏览仓库内容,一般选择 true)
    10. Include in Search(用来控制该仓库是否创建索引并提供搜索功能)
    11. Publish URL(用来控制是否通过URL提供服务)
    12. Not Found Cache TTL(缓存某构件不存在信息的时间)
      默认取值为 1440,表示若某一个构件在仓库中没有找到,在 1440 分钟内再次接收到该构件的请求,则直接返回不存在信息,不会再次查找。

创建代理仓库
  1. 点击左侧栏的Repositories。
  2. 点击仓库列表上方的Add...或Create repository按钮,在下拉菜单中选择Proxy Repository。
  3. 在代理仓库配置界面,填写对应信息,然后点击Save按钮进行保存,在仓库列表中可看到新创建的代理仓库。
    代理仓库配置中,仓库ID、仓库名称、Provider、Policy、Default Local Storage Location等配置的含义与宿主仓库相同。
    1. Remote Storage Location(远程仓库或中央仓库的地址)最重要的配置
      必须输入有效值,通常取值为 https://repo1.maven.org/maven2/
    2. Download Remote Indexes(是否下载远程仓库的索引)
    3. Auto Blocking Enabled(是否启用自动阻止,即当Nexus无法连接中央仓库或远程仓库时,是否一直等待)
      取值为true表示不再等待,直接通知客户端无法连接并返回。
    4. File Content Validation(是否启用文件内容校验)
    5. Checksum Policy(配置校验和出错时的策略)
      用户可以选择忽略、警告、记录警告信息或拒绝下载等多种策略。
    6. Artifact Max Age(构件缓存的最长时间)
      对于发布版本仓库来说,默认值为 -1,表示构件缓存后,就一直保存着,不再重新下载。
      对于快照版本仓库来说,默认值为 1440 分钟,表示每隔一天重新缓存一次代理的构件。
    7. Metadata Max Age(仓库元数据缓存的最长时间)
    8. Item Max Age(项目缓存的最长时间)

创建仓库组
  1. 点击左侧栏的Repositories。
  2. 点击仓库列表上方的Add...或Create repository按钮,在下拉菜单中选择Repository Group。
  3. 在仓库组配置界面,填写对应信息,添加仓库到仓库组,然后点击Save按钮进行保存,在仓库列表中可看到新创建的仓库组。
点击左侧栏的Repositories,点击仓库列表上方的Create repository按钮

选择maven2(hosted)创建宿主仓库、选择maven2(proxy)创建代理仓库、选择maven2(group)创建仓库组

宿主仓库配置

代理仓库配置

仓库组配置

仓库列表
  1. 索引、搜索构件
Nexus通过维护仓库的索引提供了构件搜索功能(快速寻找所需构件)。

索引
  Nexus能够遍历仓库的所有内容,搜集它们的坐标,校验和以及所包含的Java类等信息,然后以索引( nexus-indexer) 的形式保存起来(保存在Nexus安装目录/sonatype-work/nexus/indexer目录下,该目录下每个子目录都代表Nexus中的一个仓库,用来存放各个仓库的索引)。
  大多数的远程公共仓库(如:中央仓库)都维护了一个这样的索引,因此本地的Nexus在下载到这个索引后,就能在此基础上为用户提供构件搜索和浏览等服务。但并不是所有的公共仓库都提供了索引 ,对于没有提供索引的仓库是无法对其进行搜索的。

下载索引
  Nexus远程仓库索引下载功能默认是关闭的,需要主动开启。
  在某个代理仓库的Configuration选项卡下的Download Remote Indexes选项设置为true后会开启索引下载,并开始下载索引(由于Maven中央仓库的内容较多,其索引文件比较大,因此Nexus下载该文件所需的时间较长)。
  索引下载完成后,在仓库的Browse Index选项卡下可以看到仓库内容的树形结构(索引)。
  
构建搜索
  Nexus通过维护索引,为用户提供了关键字搜索、类名搜索、坐标搜索等多种搜索功能,通过这些功能,页面中能够清晰地展示出结果构件的坐标以及所属仓库。用户可以直接下载相应的构件,也可以直接复制构件的 XML 依赖声明,到项目中使用。
  关键字搜索(Keyword Search)默认
    1. 在Nexus界面左边导航栏中有一个搜索框,在搜索框内输入所需构件的关键字,单击搜索按钮就能快速得到搜索结果。
    2. 搜索结果页中的每一行代表一类构件(展示了其Group、Artifact、版本、流行版本、下载链接等信息)。
    3. 点击其中某一行(某一个构件),下方就会出现该构件的详细信息,其中不但包含构件的坐标等基本信息,还包含一段XML依赖声明(可直接复制到项目的pom.xml中使用)。点击右侧的Artifact选项卡,还能看到构件的大小、上传时间、最后修改时间、仓库中的相对位置、校验和等信息。
  除了关键字搜索外,Nexus还提供了其他高级搜索功能(可点击搜索页左上角的下拉菜单,切换搜索功能):
    1. 类名搜索
      搜索包含某个Java类的构件。
    2. GAV搜索
      通过设置Group、Artifact、版本等信息进行搜索。
    3. 校验和搜索
      通过使用“校验和”搜索构件。
  1. 从Nexus私服的代理仓库中下载构件(2种方式)
Nexus私服的主要目的之一:代理远程仓库(即当Maven项目需要下载构件到本地仓库时,不再请求外部的远程仓库,而直接从Nexus私服中下载)。

===》1. 在Maven项目的pom.xml文件中配置Nexus
  只对当前项目有效
  项目需要下载构件到本地仓库时,会依次从以下配置的Nexus代理仓库中寻找。


    
    
        
        nexus
        
        nexus
        
        http://localhost:8081/nexus/content/repositories/hello_central_proxy/
        
        
            true
        
        
        
            true
        
    



    
    
        
        nexus
        
        nexus
        
        http://localhost:8081/nexus/content/repositories/hello_central_proxy/
        
        
            true
        
        
        
            true
        
    


===》2. 在Maven安装目录/conf目录和本地仓库目录下的settings.xml文件中配置Nexus
  对本机中的所有项目有效
  setting.xml不支持直接配置repositories和pluginRepositories,好在Maven提供了Profile机制,能够让我们将仓库配置放在Profile中。

    
        nexus
        
        
            
            
                
                nexus
                
                nexus
                
                http://localhost:8081/nexus/content/repositories/hello_central_proxy/
                
                
                    true
                
                
                
                    true
                
            
        
        
        
            
            
                
                nexus
                
                nexus
                
                http://localhost:8081/nexus/content/repositories/hello_central_proxy/
                
                
                    true
                
                
                
                    true
                
            
        
    


    nexus


镜像(mirror)
  Nexus私服通常会与镜像结合使用,使Nexus成为所有远程仓库的私服(这样不仅可以从Nexus中获取所有所需构件,还能将配置集中到Nexus私服中,简化Maven本身的配置)。
  创建一个匹配任何仓库的镜像(镜像的地址为Nexus中仓库的地址),这样Maven对于任何构件的下载请求都会被拦截跳转到Nexus私服中,并从指定仓库地址中获取构件:


    
        nexus
        nexus name
        *
        http://localhost:8081/nexus/content/groups/hello_repository_group/
    

  1. 部署构件到Nexus私服的宿主仓库中(2种方式)
===》1. 通过配置Maven项目将构件自动部署到Nexus宿主仓库
  将快照版本构件部署到Nexus中策略为Snapshot的宿主仓库中;将发布版本构件部署到Nexus中策略为Release的宿主仓库中;
步骤:
  1. 配置项目的pom.xml文件。
    
      ...
      
      
        
        
            
            hello_Release_hosted
            
            http://localhost:8081/nexus/content/repositories/hello_Release_hosted/
        
        
        
            hello_Snapshot_hosted
            http://localhost:8082/nexus/content/repositories/hello_Snapshot_hosted/
        
      
    
  2. 在maven安装目录/conf目录和本地仓库目录下的setting.xml中配置认证信息。
  如果不进行配置,当宿主仓库开启了部署功能时,任何人都可以连接并部署构件至这个仓库。
    
      ...
      
        
            hello_Release_hosted
            admin
            密码
        
        
            hello_Snapshot_hosted
            admin
            密码
        
      
    
  3. 使用mvn命令部署构件。
    mvn clean deploy
在Nexus界面的仓库列表中选中hello_Snapshot_hosted宿主仓库,在Browse Index选项卡中可以看到构件(hello-0.01-SNAPSHOT.jar)已经部署到该仓库中。

===》2. 在Nexus界面中手动上传构件
  有些 Jar 文件(如:Oracle 的 JDBC 驱动)由于许可证等原因,无法存放在公开仓库中。此外,还有一些小型的开源项目,它们没有将自己的构件分发到公共仓库中,也没有维护自己的仓库,因此这些构件是无法从公共仓库中获得的。若 Maven 项目中需要这类构件,我们就需要将构件下载到本地,然后手动上传到 Nexus 私服。
步骤
  1. 选中要上传到哪个仓库,选择Artifact Upload选项卡,其中GAV Definition(提供了2种定义构件坐标的方式)用于定义上传构件的坐标信息。
    方式1. 若该构件通过Maven构建产生的,则可以选择From POM,指定该项目的pom.xml(Nexus会自动从pom.xml文件中获取构件的坐标), 最后点击Upload Artifact(s) 按钮。
    方式2. 若该构件来自第三方(如:Oracle 的 JDBC 驱动),则只能选择GAV Parameters(手动定义构件的坐标),点击Add Artifact按钮上传该构件,最后点击Upload Artifact(s) 按钮。
  2. OK
  1. Nexus2.x迁移到3.x
===》升级到Nexus2.x最新版本
  1. 下载并解压最新版本的Nexus2.x,并替换工作目录(如果大版本相同则只需替换Nexus工作目录)
    Nexus解压后都会有2个目录:
      1. nexus-xxx目录
        Nexus应用目录,包含了Nexus运行所需要的文件(如:启动脚本、依赖jar包)。
      2. sonatype-work目录
        Nexus工作目录,包含了仓库、Nexus的配置(如:定时任务、用户配置)。
  2. 修改配置文件
    如果用户对以下(Nexus安装目录/nexus-xxx目录下的)文件的默认配置进行了任何更改,则需要在新版本中手动进行相同的更改,Nexus不支持将这些文件从一个版本复制到另一个版本。
      1. conf/nexus.properties
      2. conf/jetty*.xml
      3. bin/jsw/conf/wrapper.conf
      4. nexus/WEB-INF/classes/ehcache.xml
      5. conf/logback*.xml
    由于Nexus升级迁移过程需要同时启动Nexus2.x和Nexus3.x,为了防止端口(两者默认端口都是 8081)冲突,可以将Nexus2.x启动时监听的端口(在nexus-xxx目录/conf/nexus.properties中配置)修改为8082。
  3. 将Nexus2服务指向新实例
    如果旧版本Nexus是作为Windows服务运行的,还需要将旧版本的Nexus服务卸载,然后使用新实例重新安装Nexus服务。
    1. 使用 win +R 快捷键,打开运行窗口,输入 services.msc,点击确定按钮。
    2. 进入Windows 服务列表,找到服务名为 nexus 的服务。
    3. 双击 nexus 服务,打开服务属性窗口,可以看到该服务指向的是旧版本的 Nexus 2.x
    4. 在旧版本 Nexus 应用程序目录下的 bin\jsw\windows-x86-64 目录(根据本机操作系统而定)中,以管理员身份运行 uninstall-nexus.bat,卸载 nexus 服务。
    5. 在新版本 Nexus 应用程序目录下的 bin\jsw\windows-x86-64 目录(根据本机操作系统而定)中 ,以管理员身份运行 install-nexus.bat,安装 nexus 服务。
  4. 启动新实例
    在新版本 Nexus 的 <应用程序目录>\bin\jsw\windows-x86-64 目录(根据本机操作系统而定),以管理员身份运行 start-nexus.bat。启动成功后,在浏览器地址栏输入:http://localhost:8082/nexus,访问新版本 Nexus 2.x 用户界面。

===》升级到Nexus3.x最新版本(本质是将Nexus2.x中的数据传输或迁移到Nexus3.x)
  1. Nexus2.x启用Upgrade: Agent(升级代理)功能
    1. 在Nexus2.x界面左侧的导航栏中,点击Administration下的Capabilities,查看Nexus2.x功能列表。
    2. 点击Capabilities列表上方的New按钮,新建一个类型(Type)为Upgrade: Agent的功能,并填写 Access Token(Nexus之间数据传输的重要凭证之一),最后点击下方的 Add 按钮。
    3. 返回列表页,可以看到已经添加了Upgrade: Agent,选中该功能可以在下方查看或修改其中配置。
  2. Nexus3.x启用Upgrade(升级)功能(接收来自Nexus2.x传输的数据)
    1. 点击最上方的齿轮状图标,切换到Nexus 3.x “管理和配置”模块,然后点击System下的Capabilities,查看Nexus3.x功能列表。
    2. 点击列表上方的Create capability按钮,创建一个类型(Type)为Upgrade的功能。
    3. 返回列表页,可以看到已经添加了Upgrade,在左侧列表的System菜单卡下还多出了一个Upgrade 菜单。
  3. 在Nexus3.x中配置升级信息
  4. 运行升级程序
    1. 点击System菜单下的Upgrade ,进入升级程序概述(升级过程中的注意事项、允许升级的内容、无法升级的内容)。阅读完成后,点击下方的 Next 按钮。
    2. 跳转到 “代理链接(Agent Connection)”页面,配置 URL(Nexus2.x 的完整访问地址,如: http://localhost:8082/nexus) 、Access Token(Nexus 2.x 启用升级代理功能时配置的Access Token)等字段,配置完成后,点击下方的 Next 按钮。
    3. 跳转到“内容”页面,在该页面中选择升级过程中传输的内容(仓库的配置及内容;Nexus服务器配置),全部勾选,点击下方的 Next 按钮。
    4. 跳转到“仓库默认设置(Repository Defaults)”页面,设置仓库内容的存储位置(Blob store)以及数据传输方式(Data Transfer Method),设置完成后,点击下方的 Next 按钮。
    5. 跳转到“仓库(Repositories)” 页面,选择迁移的仓库,选择完成后,点击下方得 Next 按钮。除了选择升级的仓库,点击仓库列表最后一列的配置图标,可以为仓库自定义升级选项。
    6. 配置完成后,点击最下方的 Next 按钮,跳转到 “预览(Preview)”页面。该页面中展示了所有的升级配置信息,确认无误后,点击下面的 Begin 按钮,开始运行升级程序。
    7. 开始升级前,会先跳转到 “准备(Preparing)”页面,先进行简短的准备工作。当准备工作进度条到达 100% 后,点击下方的 Continue 按钮,继续进行下一步。
    8. 跳转到“同步(Synchronizing)”页面,在这里 Nexus 升级程序会执行两步操作,扫描仓库和数据同步。仓库扫描完成后,点击下方的 Continue 按钮,开始同步数据。同步开始以后,再对 Nexus 2.x 仓库所做的任何修改都不会同步到 Nexus 3.x 中。
    9. 同步完成后,点击下方的 Done 按钮,退出升级程序。
    10. 点击最上方的立方体图标,切换到 Nexus 3.x “浏览”模块,点击左侧的 Browse 菜单,浏览 Nexus 3.x 仓库列表,可以看到 Nexus 2.x 中的仓库及构件都已经迁移到 Nexus 3.x 了。
旧版本 升级流程
3.1.0或更高版本 1. 升级到最新3.x版本
3.0.0到3.0.2 1. 学习3.1.0 中引入的重要目录布局; 2. 升级到最新3.x版本
2.0及其他2.x版本 1. 升级到最新2.x版本; 2. 升级到最新3.x版本
1.x 1. 升级到2.7.2之前的任何2.x版本(不支持直接升级到2.7.2之后的版本) ; 2. 升级到最新2.x版本; 3. 升级到最新3.x版本。
在运行窗口中输入services.msc进入Windows服务列表

双击nexus服务,查看详细属性

升级到Nexus3.x最新版本:


Nexus2功能列表

Nexus2添加Upgrade: Agent功能

Nexus2添加成功后的功能列表

Nexus3功能列表

Nexus3添加Upgrade

Nexus3添加成功后的功能列表

升级程序概述

配置Nexus代理连接

需要传输的内容

Nexus3.x仓库默认设置

选择需要迁移的仓库

预览升级配置信息

升级准备工作

Nexus同补

迁移升级完成

Nexus3中查看成功迁移的仓库列表
  1. Nexus离线更新中央仓库索引(仅支持Nexus2.x)
Nexus可以远程下载和缓存中央仓库索引,但是对于国内用户来说,Nexus远程更新索引使用的站点位于国外且部分索引文件较大,经常会出现下载速度缓慢或索引文件不完整等情况。解决:离线更新中央仓库索引(更加快捷可靠的索引更新方式)直接将索引文件下载,然后拷贝至Nexus工作目录中。

步骤:
  1. 下载以下3个文件,放置在一个目录下
      1. nexus-maven-repository-index.gz 
      2. nexus-maven-repository-index.properties 
      3. indexer-cli-5.1.1.jar
  2. 解压(10分钟左右)
    java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer
    解压完成后,会自动生成一个名为indexer的目录,该目录中存放的就是中央仓库离线索引文件。
  3. 更新并验证索引
    将indexer目录中所有索引文件复制到Nexus安装目录/sonatype-work/nexus/indexer/central-ctx目录下
    重启Nexus,在仓库列表中,选中Central代理仓库,然后点击Browse Index选项卡和Browse Remote选项卡,如果索引一致则表示离线索引更新成功。

如果想在Nexus3.x中使用离线索引,需要先在Nexus2.x中离线更新索引后,再将数据迁移到Nexus3.x中。

下载nexus-maven-repository-index.gz、nexus-maven-repository-index.properties(一般位于列表的末尾)
在Maven中央仓库中搜索Indexer CLI,并选择Maven :: Indexer CLI,下载indexer-cli-xxx.jar

你可能感兴趣的:(搭建Nexus(Maven私服))