`

Nexus安装及使用

 
阅读更多
安装 Nexus
我们从http://nexus.sonatype.org/downloads/ 来获取最新版本,目前最新版本为1.3.4

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

1)Bundle 方式安装
解压nexus-webapp-1.3. 4 -bundle.zip 至任意目录,如D:/ tools ,转到目录D:/ tools/nexus-webapp-1.3. 4 /bin/jsw/windows-x86-32 ,运行Nexus.bat ,如果你是在linux下安装,那么就下载nexus-webapp-1.3. 4 -bundle. tar .gz, 解压后转到${NEXUS_HOME}/ nexus-webapp-1.3.3/bin/jsw/linux-x86-32,它还支持solaris,macos等操作系统。当你看到“Started SelectChannelConnector@0.0.0.0:8081”之后,说明Nexus启动成功了,然后打开浏览器,访问http://127.0.0.1:8081/nexus,通过admin的帐号(admin)和密码(admin123)登录你会看到如下的页面:



如果有新版本发布,会有提示在默认页面上。
这里,可以管理仓库,配置Nexus系统,管理任务,管理用户,角色,权限,查看系统的RSS源,管理及查看系统日志,等等。

War 方式安装

你可以同过war的方式以web应用的形式发布到你的应用服务器,比如tomcat。你所要做的就是下载war版本的文件,然后放到应用服务器的发布目录即可,这里就不多讲了。

到此我们已经安装好Nexus,下面我来介绍下一些我们常用的功能和使用:

配置 中央仓库



在左边菜单栏里选择Repositories,然后会出现右边的画面,右边上半部分是列出来的repository,黑体字是类型为group的repository. 这里简单介绍下几种repository的类型:
hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
Maven 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 -> 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 仓库组

仓库组的概念是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. 如图:

[img]http://www.blogjava.net/images/blogjava_net/baoyaer/dg3dvw7b_716p3zjdc7_b.png
[/img]

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

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




好多公司处于安全考虑,用代理上网,而nexus 经常需要往maven repository中心下载东西,所以需要给nexus设置代理。 开始没找到地方,后来发现可以从nexus后台管理器界面上直接设置,地方很隐蔽:

登陆后进入管理页面,从左边菜单栏选择Server 打开右边tab页,发现还是找不到,别着急,仔细找会发现有行: default http proxy settings   前面有个checkbox 未勾选, 速度勾选之,马上出现了您熟悉的  proxy host,proxy port , username , passowrd.  okay 代理设置完成,现在nexus能通过互联网从maven repository中心下载东西了!

通过 Nexus 搜索构件

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

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



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



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

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




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



比如我们这里选择GAV模式, 而且我只知道artiface name : testng和版本号5.8, 其他的我不知道, 那么就在artifact 和 version处分别输入testng 和 5.8 , 搜索结果如下:



你如果你不知道知道构件的名称, 只知道classname, 那么你也可以通过class name 的方式搜索,这里就不再赘述
当你选择一项搜索结果,在页面的下方会出现这个构件的详细信息, 并且会列出这个构件的Maven依赖配置, 你可以直接拷贝到你的pom文件中使用,这是个非常实用的功能:



在 Maven 中使用 Nexus

到此为止我们介绍了如何安装和使用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来让我们的依赖开发变得简单.
分享到:
评论

相关推荐

    在CentOS下使用nexus搭建maven私服的安装教程

    ### 在CentOS下使用Nexus搭建Maven私库的安装教程 #### 一、引言 随着企业级项目规模的不断扩大和技术栈的日益复杂,如何有效地管理项目中的依赖成为了一个重要的问题。Maven作为Java生态中最流行的构建工具之一,...

    Nexus Repository Manager的使用

    通过本文档的介绍,我们可以了解到如何安装和配置Nexus Repository Manager OSS,并了解其基本使用方法。对于希望集中管理软件包和依赖的企业来说,Nexus Repository Manager无疑是一个非常实用且高效的解决方案。...

    nexus私服搭建以及使用教程

    3. **配置环境变量**: 设置`JAVA_HOME`指向Java安装路径,确保Nexus可以正常启动。 4. **访问Web界面**: 默认情况下,Nexus监听8081端口,打开浏览器输入`http://localhost:8081/nexus/`即可访问。 四、创建仓库 1....

    Nexus安装和配置手册.doc

    Nexus安装和配置手册 Nexus安装和配置手册是Sonatype公司开发的一款软件仓库管理...Nexus安装和配置手册提供了详细的安装和配置指南,旨在帮助开发者和项目经理更好地使用Nexus管理项目中的软件依赖关系和版本控制。

    Linux-nexus安装

    本文将详细介绍如何在Linux系统上安装Nexus。 一、系统需求与准备 在开始安装前,请确保你的Linux系统满足以下条件: 1. 操作系统:推荐Ubuntu 18.04或CentOS 7,因为这两个版本有良好的社区支持。 2. 用户权限:...

    maven仓库Nexus安装文件

    1. **下载Nexus**:压缩包文件“nexus-2.2-01”包含了Nexus的安装文件,解压后,通常包含一个可执行的jar文件(如nexus.jar)。 2. **运行Nexus**:使用Java运行环境(JRE)启动Nexus。在命令行中,执行`java -jar ...

    CentOs安装nexus3.7

    CentOs安装nexus3.7

    CentosOS 7 安装 Nexus OSS 3

    CentosOS 7 安装 Nexus OSS 3 CentosOS 7 安装 Nexus OSS 3 是一个详细的安装指南,旨在帮助用户在 CentosOS 7 环境下安装和配置 Nexus OSS 3。该指南涵盖了从安装 Java 到配置 Nexus 仓库的所有步骤,包括下载和...

    nexus 2.x 安装配置指南

    2. **安装服务**:如果希望Nexus作为Windows服务运行,可以使用安装服务命令。 ![安装Nexus服务](#图3-2安装Nexus服务) 3. **访问主页**:启动后,可以通过浏览器访问Nexus主页。 ![Nexus主页面](#图3-3Nexus主...

    nexus搭建学习使用安装文件

    本教程将围绕"Nexus搭建学习使用"这一主题,详细介绍Nexus的安装与使用。 首先,我们来看如何下载并安装Nexus。Nexus的最新版本可以在Sonatype官方网站上找到。在本例中,我们使用的版本为3.56.0-01,这是一个包含...

    nexus 安装文件 版本3.14-win64

    描述中提到的“里边有安装说明”,意味着压缩包内可能包含了详细的安装指南,这对于首次接触Nexus的用户来说非常有用,因为他们可以通过这些说明了解如何正确配置和启动Nexus服务。 关于标签: 1. "nexus":这是该...

    Nexus安装和配置手册

    本手册将详细阐述Nexus的安装、配置过程以及相关概念。 1. **简介** 1.1. **概述** Nexus作为企业级的软件仓库解决方案,提供了一个集中式的平台来存储、管理和检索各种类型的软件包,如JARs、WARs、NPM包等。它...

    Nexus3.19.1_安装.txt

    ### Nexus 3.19.1 在 Linux 系统下的安装与配置 #### 一、简介 Nexus 是由 Sonatype 提供的一款开源仓库管理系统,主要用于管理各种类型的软件构件(如二进制文件、源代码等)。通过 Nexus,开发者可以方便地存储、...

    nexus3-linux安装配置.zip

    在这个“nexus3-linux安装配置.zip”压缩包中,包含了在Linux系统上安装和配置Nexus 3所需的所有资源。 1. **Nexus 3安装** - Nexus 3的安装通常涉及下载适用于操作系统的二进制包。在这个例子中,我们有“nexus-...

    nexus内网搭建手册

    为了安装 Nexus,需要首先安装 JDK。JDK 安装步骤如下: 1. 查看当前 Linux 系统是否已经安装 Java:输入 `rpm -qa | grep java`。 2. 卸载已经安装的 OpenJDK:输入 `rpm -e --nodeps &lt;软件名称&gt;`。 3. 上传 JDK ...

    nexus安装包

    **二、Nexus安装步骤** 1. **下载安装包**:从Sonatype官方网站获取最新的Nexus版本,例如在本案例中是nexus-3.3.1-01。 2. **解压安装包**:将下载的压缩文件解压到你希望安装的目录,例如`/opt/nexus`。 3. **...

    nexus conan 插件

    通过安装Nexus Conan插件,你可以实现以下功能: 1. **本地存储库**:创建一个本地Conan存储库,开发者可以在其中上传、搜索和下载Conan包,无需频繁与远程仓库交互,提高了开发效率。 2. **代理远程仓库**:Nexus...

Global site tag (gtag.js) - Google Analytics