`

nexus的安装和基本配置

 
阅读更多

 

Nexus介绍

Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。

 

下载和安装

你可以从http://nexus.sonatype.org/downloads/ 下载最新版本的Nexus,笔者使用的是1.3.0版本。

Nexus提供了两种安装方式,一种是内嵌Jetty的bundle,只要你有JRE就能直接运行。第二种方式是WAR,你只须简单的将其发布到web容器中即可使用。

 

安装过程:

将nexus.war复制到tomcat的webapps中,解压成nexus目录 

 

修改nexus目录的:WEB-INF中的plexus.properties文件,

    修改其中nexus-work项,到自己需要的目录中

启动tomcat,在浏览器上能够访问到 http://127.0.0.1:8080/nexus/ ,以及在nexus-work的设置对应地方能看到内容,启动成功

 

先看一下界面:

 

 

在左边菜单栏里选择Repositories,然后会出现右边的画面,右边上半部分是列出来的repository,黑体字是类型为group的repository. 这里简单介绍下几种repository的类型:

 

hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。

proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。

group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

 

 

 

central是Maven的中央仓库,点击它并选择configuration标签栏,我们会看到下面的页面:

 

 

这里有几个项目是我们可能会经常用到的:

 

Override local storage location: 在这个选项你可以配置你的Nexus本地仓库的存放地址,用来覆盖其默认的存放地址

Remote storage location: 这里是远程仓库的地址,为了提高代理速度,你可以修改为国内的镜像地址。默认值是http://repo1.maven.org/maven2/

Download remote indexes: 这里配置是否下载远程索引文件,模式是false, 建议配置为true,这样我们便可以通过索引文件来搜索我们需要的构件。

 

 

Maven central是一个比较大的代理仓库,如果你需要添加的一个代理仓库,那么可以在点击左边惨淡栏里面的Repositories,然后右边的页面点击add -> proxy repository

 

填写相关信息保存即可。通常情况下,使用预设的代理仓库已经能够满足大部分项目的需求了, 只有在特殊需求的情况下才会参加代理仓库.

 

管理本地仓库

 

我们前面讲到类型为hosted的为本地仓库,Nexus预定义了3个本地仓库,分别是Releases, Snapshots, 3rd Party. 分别讲一下这三个预置的仓库都是做什么用的:

 

Releases: 这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到Nexus的Releases本地仓库. 关于符合发布后面会有介绍.

Snapshots: 这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.

3rd Party: 顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库嘛, 没错, 这里的是指可以让你添加自己的第三方库, 比如有些构件在中央仓库是不存在的. 比如你在中央仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rd party仓库.

你也可以创建自己的本地仓库,点击Repository面板上方的Add按钮,然后选择Hosted Repository,然后在下方的配置面板中输入相关信息, 这里我们不再需要填写远程仓库地址,根据自己的需要选择Release或者Snapshot,如图:

 

 

仓库组的概念是Maven没有的,通过前面介绍可以了解到, 我们可以建立多个proxy代理仓库,hosted本地仓库, 如果没有仓库组的概念,我们如果需要引用这些仓库的是时候需要一一加入到我们的setting.xml里面去, 有了仓库的组的概念, 我们只需要做一次引用就可以了,把我们需要的仓库加入到仓库组即可.像这样:

 

 

<repositories>
    <repository>
        <id>nexus</id>                                   
        <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>                      
        <releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
		   <enabled>true</enabled>
		</snapshots>
	</repository>
</repositories>
 

 

Nexus中预设了2个仓库组,public repositories和public snapshot repositories. 如图:

 

 

 

 

这个仓库组默认包含本地仓库Releases, snapshots, 3rd party和代理仓库Maven Central. 你可以在Configuration配置页添加仓库到这个仓库组. 如果需要你还可以创建一个仓库组,如图:

 

点击 Add->Repository Group

 

出现New Repository Group界面后,填入ID, name 等相关信息, 在右边Available Repositories 栏里可以选择你要添加的仓库到你新建的仓库组. 

 

通过 Nexus 搜索构件

 

 

 

在我们实际使用构件的过程中通常遇到一个问题,有时候我紧紧知道我所需要的构建的大致名字,并不知道全称或group id, 这是件非常头疼的事情. Nexus基于Nexus indexer的搜索功能帮我们解决了这个问题.

 

要是用搜索功能, 必须要有索引文件, Nexus默认是不建立索引文件的,因为像中央仓库这样的索引文件的建立需要耗费比较大的网络资源,仅索引文件就要几十兆. 要开启中央仓库的索引文件下载功能需要在Maven Central的配置页面, 把Download Remote Indexes选择true. 如图:

 

 

这样设置以后, Nexus会自动从远程中央仓库下载索引文件, 为了检验索引文件自动下载是否生效,可以却换到Browse:

 

 

如果出现先以上文件夹,那说明索引文件已经建立.

 

下面我试一下搜索功能, 在左边菜单栏里面有个Artifact Search, 在输入框里面输入你想要搜索的构件名字,比如: testing,那么查询结果如下:

 

 

这是模糊查询的结果,当然如果你知道更多信息,比如版本号等,你可以使用高级搜索,点击高级搜索后,右边界面会提供集中搜索方式:keyword, classname, GAV, checksum

 

你如果你不知道知道构件的名称, 只知道classname, 那么你也可以通过class name 的方式搜索,这里就不再赘述

 

到此为止我们介绍了如何安装和使用Nexus以及其基本配置, 下面我们介绍下如何让Maven来使用Nexus本地仓库用来替代使用远程仓库. 在Maven使用Nexus本地仓库只需稍作配置, 在settings.xml中加入以下代码:

 

 

    <profile>
       <id>dev</id>
          <repositories>
             <repository>
                 <id>nexus</id>
                 <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
                 <releases>
                    <enabled>true</enabled>
                 </releases>
                 <snapshots>
                    <enabled>true</enabled>
                 </snapshots>
              </repository>
            </repositories>           
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <url>http://127.0.0.1:8081/nexus/content/groups/public</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>dev</activeProfile>
    </activeProfiles>
 

 

 

 

这里配置了repository和pluginRepository, Maven在使用第三方构件和插件时是分开来配置的,所以如果我们也希望插件的下载也通过我们的本地仓库来下载,那么我们就需要配置pluginRepository.

 

红色字体部分就是我们之前安装的Nexus的地址, 这个地址可以是你们公司局域网内部的一台仓库服务器.

 

<releases> <enabled>true</enabled></releases>这个标签的作用是设定是否允许下载 

 

release版本的载构件, 同样snapshots标签可以设定是否允许下载snapshot版本的构件.

 

通常,我们不建议下载snapshot版本的构件,因为它是不稳定的版本, 除非你有特殊的需

 

求.

 

构件部署

 

 

 

有些时候我们需要部署构件到Nexus的3rd party, 比如我们在中央仓库找不到我们需要的构件, 我们可以通过Nexus的UI来上传构件:

 

点击左边菜单栏的 Repositories, 然后点击右边界面的3rd party, 选择界面下方的Artifact Upload, 这个时候出现以下界面:

 

 

上传构件需要两个步骤,一个是定义文件的上传,再就是构件的实体文件.

 

第一部分定义文件可以是POM文件, 这也是比较推荐的方式, 如果没有pom文件,可以

 

选择以参数的形式输入.

 

第二部分是上传构件的实体文件,这里简单说一下Classifier和Extension, 这两个都是选

 

填相, Classifier用来区别同功能的构件用于不同的场景, 比如这个构件是分别针对JDK14

 

和JDK15做了2个功能一样的Jar, 这个时候你就需要指定这个构件的Classifier为JDK14

 

还是JDK15. Extension是指扩展名,如果不提供,那么会自动取这个构件的Packaging Type

 

作为扩展名, 比如 ear, jar, war 等等. (Packaging Type是在第一步中通过pom文件或者手

 

工输入得到的)

 

 

 

刚才说了3rd party的部署, 关于releases 和 snapshots的UI部署也是一样的操作过程.

 

我们之前也讲过, 这里的releases和snapshots是用来部署我们自己的项目构件的, 通过

 

UI部署是可以,但是不是最高效的, 我们可以通过配置Maven来自动部署我们的项目构

 

件,这也是我们建立自己的仓库的一个非常重要的原因, 下面就让我们看看如何配置:

 

首先需要在POM文件中加入以下代码:

 

<project>   
…   
<distributionManagement>   
  <repository>   
    <id> nexus-releases</id>   
      <name> Nexus Release Repository</name>   
      <url> http://127.0.0.1:8081/nexus/content/repositories/releases/</url>   
  </repository>   
  <snapshotRepository>   
    <id> nexus-snapshots</id>   
    <name> Nexus Snapshot Repository</name>   
    <url> http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>   
  </snapshotRepository>   
</distributionManagement>   
…   
</project>  

 

这里配置,让Maven知道当我要发布release版本或者snapshot版本是需要发布到哪个地址.

 

然后我们需要在setting.xml里面配置一下Nexus的帐号和密码:

 

<settings>   
…   
<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>   
…   
</settings>
 

 

 

到此为止, 我们就可以通过命令mvn deploy或者通过IDE的可视化界面点击deploy来发布我们项目到本地仓库了. 通过这种方式我们可以很方便的进行模块间的依赖开发, 在后面的文章中我会详细介绍如何通过snapshot来让我们的依赖开发变得简单.

 

 

 

小结

本文介绍了Maven仓库, 如何通过Nexus建立自己本地仓库, 通过和远程仓库的比较, 我们知道Nexus给我带来很多方

分享到:
评论

相关推荐

    CCIE-DC Nexus专题视频.zip

    5-Nexus基本接口配置 6-Nexus FEX技术 6-Nexus N5K-FEX 7-Nexus Port-Channel介绍 8-Nexus EvPC 8-Nexus N7K-N5K-vPC实验 8-Nexus N7K-vPC实验 8-Nexus vPC技术 9-Nexus vPC最佳设计架构 10-Nexus FabricPath简介 11...

    nexus:配置文件服务器

    Nexus 配置服务器 用于跨服务器分发部署配置的 API 服务器 基本思路: 正在部署的应用程序(例如 Docker 容器)中没有配置文件。 他们只有一个令牌和一个 API url。 应用联系服务器 API 并提供其密钥 服务器验证...

    maven服务器---nexus的使用

    用于介绍maven服务器---nexus的使用(不会使用m2eclipse插件的,建议先参考m2eclipse插件的使用),与前面的文档一样,都配置了详细的图解,基本做到傻瓜式的照着图片做,就能顺利完成nexus服务器的搭建,...

    nexus-3.13-unix.zip

    此版本为3.13版本,官网直接下载nexus的安装包基本上下载不了,此安装包可直接解压后按照网上的方法进行配置即可使用,需要的小伙伴自行下载~

    Nexus-7000入门经典.rar

    基本概述 初步启动系统验证 命令行界面(CLI)概述 接口配置 2层交换和生成树配置 路由协议配置 FHRP配置 验证IP转发 安全协议配置 系统管理协议配置 疑难解答工具

    Maven3实战视频教程(14集)

    Maven3_07_nexus的介绍和安装 Maven3_08_nexus的配置 Maven3_09_发布项目到nexus中 Maven3_10_生命周期和插件简介 Maven3_11_插件基础 Maven3_12_插件的应用 Maven3_13_测试 Maven3_14_发布web项目 Maven3实战笔记 ...

    maven window下安装包

    第9章:使用Nexus创建私服/9.3 Nexus的仓库和仓库组/9.3.2 Nexus仓库分类的概念 第9章:使用Nexus创建私服/9.3 Nexus的仓库和仓库组/9.3.3 创建Nexus宿主仓库 第9章:使用Nexus创建私服/9.3 Nexus的仓库和仓库组/...

    Cisco-POAP:用于Nexus 9K交换机执行POAP功能的Python脚本

    这些脚本的目的是使升级软件映像和在首次在网络中部署的设备上安装配置文件的过程自动化。 POAP的先决条件 基本POAP功能需要以下内容 DHCP服务器 TFTP服务器 FTP / SFTP服务器 POAP python脚本 NXOS映像 配置文件 ...

    Maven配置文档

    了 Maven的安装、配置和基本使用方法,以便于初学者参考;详细讲解了坐标和依赖、Maven仓库、生命周期和 插件、聚合与继承等 Maven的核心概念,建议所有读者仔细阅读;系统性地阐述了使用 Nexus建立私服、使用 Maven...

    Maven+Nexus深入讲解+应用案例+面试题

    本课程共分36节,内容包括maven基本使用中的依赖、继承、聚合、插件等,另外详细的讲述了nexus私服的搭建、使用和配置,通过案例实现了通过私服下载依赖、上传依赖到私服等功能,还配备了40道有关maven的面试题,...

    Network-Device-Configuration:配置网络设备的Ansible角色

    Ansible网络角色,用于执行以下网络设备的基本配置: Arista EOS 思科ASA 思科催化剂思科Nexus F5 BigIP 帕洛阿尔托用法具有config_ *的任何角色都将对设备进行配置更改。 角色名称和职能: config_aaa :在设备上...

    pyramida-serverless:Prisma(Nexus)+打字稿+ AWS Serverless Lambda =

    Prisma(Nexus)+打字稿+ AWS无服务器Lambda的模板= :fireworks: 该样板包括: :rocket: :high_voltage: ,支持Webpack,自动修剪和打字稿支持 :alembic: 使用生成的和CRUD模式 :construction_worker: 配置将...

    Android开发中Launcher3常见默认配置修改方法总结

    本文实例讲述了Android开发中Launcher3常见默认配置修改方法。分享给大家供大家参考...Android默认的Launcher没有过多的定制,更加简洁,受到源生党的追捧,Google的Nexus系列手机基本都是用的源生Launcher,目前Andro

    gitops:包含环境配置的GitOps存储库

    该存储库包含使用kubectl或oc或Argo CD升级基础架构,构建和应用程序所需的一切。 先决条件 此演示需要一些基本的基础架构: Nexus 2 OpenShift管道运算符(v1.3.1) AMQ Streams运算符(v1.6.2) 如果还没有这些...

    prjoxide:记录莱迪思的28nm FPGA零件

    当前,逻辑块(PLC)配置和互连; 基本IO和IOLOGIC配置; EBR配置; 全局路由; DSP和PLL配置已变得模糊。 剩余的工作包括完成IO模糊测试; 并模糊诸如PCIe和DPHY之类的硬IP。 氧化亚铁也将需要更新以支持生产硅; ...

    CompileAndroidSource:编译Android

    编译Android源码 配套视频教程地址 说明 本教程演示如何编译Android源码,目的是教会你如何基于aosp(Android开放源代码项目)自定义...全新安装Ubuntu 16.04操作系统(安装到虚拟机也可以,至少为虚拟机分配16G内

    spring-cloud+docker.7z

    本文档记录了SpringCloud的简易框架的搭建、Docker的安装、Nexus3与Docker的整合建立私有仓库及如何上传本地镜像、Dockerfile与Docker Compose的关系以及应用示例等等内容,总之本文档值得下载,导入即用,无需更改...

    Maven实战 许晓斌 著

    本书它内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装、配置和基本使用方法,以便于初学者参考;详细讲解了坐标和依赖、Maven仓库、生命周期和插件、聚合与继承等Maven的核心概念,建议所有...

    Maven实战.pdf

    本书它内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装、配置和基本使用方法,以便于初学者参考;详细讲解了坐标和依赖、Maven仓库、生命周期和插件、聚合与继承等Maven的核心概念,建议所有...

    《Maven实战》

    本书它内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装、配置和基本使用方法,以便于初学者参考;详细讲解了坐标和依赖、Maven仓库、生命周期和插件、聚合与继承等Maven的核心概念,建议所有...

Global site tag (gtag.js) - Google Analytics