配置Nexus仓库,部署构件到Nexus仓库

上一节,我们讲述了如何配置安装nexus系统,这节,我们来介绍nexus的使用

1.登录

在红色的部分点击登陆,输入用户名和密码 admin/admin123。

这里可以配置nexus系统,管理用户,管理角色,管理任务,查看系统Rss源以及查看系统日志,本文就介绍nexus最基本的用法。

2.代理maven中央仓库

点击右边菜单栏的Repositories,界面的主面板会显示所有一个所有仓库及仓库组的列表,你会看到它们的type, type类型字段里有group,hosted,proxy,virtual四种类型,我们这里不关心virtual类型,介绍剩余三种类型:

  • hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。
  • proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。

由此我们知道,我们需要配置一个proxy代理仓库,其实Nexus已经内置了Central,但我们需要做一些配置。点击仓库列表中的Central,如下图:

我们会在主界面的下半部分看到好几个页面Browse Index,Browse Remote,Browse Storage,Configuration,Health Check,Routing,summary,我们点击Configuration进行配置,你现在需要关心的两个配置项:Remote Storage Location 为远程仓库地址,对于Central来说是http://repo1.maven.org/maven2/;“Download Remote Indexes”顾名思义是指是否下载远程索引文件,Maven Central的该字段默认为False,这是为了防止大量Nexus无意识的去消耗中央仓库的带宽(中央仓库有大量的构件,其索引文件也很大)。这里我们需要将其设置为True,然后点击Save。在Nexus下载的中央仓库索引文件之后,我们就可以在本地搜索中央仓库的所有构件。下图展示了我们刚才所涉及的配置:

3.添加一个代理仓库

这里我们再举一个例子,我们想要代理Sonatype的公共仓库,其地址为:http://repository.sonatype.org/content/groups/public/。步骤如下,在Repositories面板的上方,点击Add,然后选择Proxy Repository,在下方的配置部分,我们填写如下的信息:Repository ID - sonatype;Repository Name - Sonatype Repository;Remote Storage Location - http://repository.sonatype.org/content/groups/public/。其余的保持默认值,需要注意的是Repository Policy,我们不想代理snapshot构件,原因前面已经描述。然后点击Save。配置页面如下:

4.管理本地maven仓库

nexus预定义了三个本地仓库,分别为Releases,Snapshots,和3rd Party。这三个仓库都有各自明确的目的。Releases用于部署我们自己的release构件,Snapshots用于部署我们自己的snapshot构件,而3rd Party用于部署第三方构件,有些构件如Oracle的JDBC驱动,我们不能从公共仓库下载到,我们就需要将其部署到自己的仓库中。

当然你也可以创建自己的本地仓库,步骤和创建代理仓库类似,点击Repository面板上方的Add按钮,然后选择Hosted Repository,然后在下方的配置面板中输入id和name,注意这里我们不再需要填写远程仓库地址,Repository Type则为不可修改的hosted,而关于Repository Policy,你可以根据自己的需要选择Release或者Snapshot,如图:

5.管理maven仓库组

Nexus中仓库组的概念是Maven没有的,在Maven看来,不管你是hosted也好,proxy也好,或者group也好,对我都是一样的,我只管根据groupId,artifactId,version等信息向你要构件。为了方便Maven的配置,Nexus能够将多个仓库,hosted或者proxy合并成一个group,这样,Maven只需要依赖于一个group,便能使用所有该group包含的仓库的内容。

Nexus预定义了“Public Repositories”和“Public Snapshot Repositories”两个仓库组,前者默认合并所有预定义的Release仓库,后者默认合并所有预定义的Snapshot仓库。我们在本文前面的部分创建了一个名为“Sonatype Repository”的仓库,现在将其合并到“Public Repositories”中。

点击仓库列表中的“Public Repositories”,然后选择下方的”Configuration” Tab,在配置面板中,将右边“Avaiable Repositories”中的“Sonatype Repository”拖拽到左边的“Ordered Group Repository”中,如图:

创建仓库组和创建proxy及hosted仓库类似,这里不再赘述。需要注意的是format字段需要填写“maven2”,添加你感兴趣的仓库即可。

6.搜索构件

在浩大的Maven仓库中一下下点击链接,浏览路径以寻找感兴趣的构件是一件很郁闷的事情。Nexus基于nexus-indexer提供构件搜索功能,要想对仓库进行搜索,无论是hosted,proxy,或者group,你都必须确认索引文件存在。这一点对于代理仓库尤其重要,有些远程仓库可能根本就没有索引,所以你无法搜索这些代理仓库。有些远程仓库的远程索引非常大,如中央仓库达到了70M左右,那么第一次下载索引需要花很多时间,所以要期望得到搜索结果,确保看到如下的文件:

一旦你的Nexus拥有了本地或者远程仓库的索引文件,你就可以享受Nexus的构件搜索功能了。不论登陆与否,你都可以使用关键字进行模糊搜索,比如我在左边导航栏上部的搜索框内输入junit,然后点击搜索按钮,右边立刻会分页显示500多条的junit相关构件信息。如果你了解更多的信息,你也可以通过限定groupId,artifactId,version进行搜索,点击导航栏中的“Advanced Search”,点击右边所有页面左上角的下拉框,选择“GAV Search”。笔者这里输入junit:junit:4.4,然后回车:

选择一项搜索结果,在页面下方会显示“Artifact Information”的面板,你可以点击”artifact”或者”pom”下载对应文件,而该面板右边更显示了一个Maven依赖配置,你可以直接复制该配置到Maven POM中,这是个十分方便的特性。

此外,值得一提的是,Nexus还支持基于classname的搜索,你只需点击搜索页面右上角的下拉框,选择“Classname Search”,然后输入类名即可,这里我不再赘述。

7.配置Maven使用Nexus

默认情况下,Maven依赖于中央仓库,这是为了能让Maven开箱即用,但仅仅这么做明显是错误的,这会造成大量的时间及带宽的浪费。既然文章的上节已经介绍了如何安装和配置Nexus,现在我们就要配置Maven来使用本地的Nexus,以节省时间和带宽资源。

我们可以将Repository配置到POM中,但一般来说这不是很好的做法,原因很简单,你需要为所有的Maven项目重复该配置。因此,这里我将Repository的配置放到$user_home/.m2/settings.xml中:

<settings 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/settings-1.0.0.xsd">
  <localRepository>/Users/chendaoqiu/.m2/repository</localRepository>
    <interactiveMode />
    <usePluginRegistry />
    <offline />
    <pluginGroups />
  <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>
    <mirrors />
    <proxies />

    <profiles>

    <profile>
            <id>dev</id>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <url>http://42.121.113.40:8981/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>

    </profile>
    </profiles>

    <activeProfiles>
        <activeProfile>dev</activeProfile>
  </activeProfiles>

</settings>

我们不能直接在settings.xml中插入<repositories>元素,这里我们编写了一个profile,并添加了一个profile并使用<activeProfile>元素自动将这个profile激活。这里的local-nexus仓库指向了刚才我们配置的Nexus中“Public Repositories”仓库组,也就是说,所有该仓库组包含的仓库都能供我们使用。此外,我们通过 <release><snapshots>元素激活了Maven对于仓库所有类型构件下载的支持,当然你也可以调节该配置,比如说禁止Maven从Nexus下载snapshot构件。

使用该配置,Maven就会从你的Nexus服务器下载构件了,速度和从Central下载可不是一个数量级的。

8.部署构件至nexus

Nexus提供了两种方式来部署构件,你可以从UI直接上传,也可以配置Maven部署构件。

8.1通过nexus UI部署

有时候有个jar文件你无法从公共Maven仓库找到,但是你能从其它得到这个jar文件(甚至是POM),那么你完全可以将这个文件部署到Nexus中,使其成为标准流程的一部分。步骤如下:

8.2通过maven部署

更常见的用例是:团队在开发一个项目的各个模块,为了让自己开发的模块能够快速让其他人使用,你会想要将snapshot版本的构件部署到Maven仓库中,其他人只需要在POM添加一个对于你开发模块的依赖,就能随时拿到最新的snapshot。

以下的pom.xml配置和settings.xml能让你通过Maven自动化部署构件:

pom.xml

<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/maven-v4_0_0.xsd">
    ...
<distributionManagement>
      <repository>
        <id>nexus-releases</id>
          <name>Nexus Release Repository</name>
          <url>http://42.121.113.40:8981/nexus/content/repositories/releases/</url>
      </repository>
      <snapshotRepository>
        <id>nexus-snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://42.121.113.40:8981/nexus/content/repositories/snapshots/</url>
      </snapshotRepository>
    </distributionManagement>
    ...
</project>

settings.xml

<settings 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/settings-1.0.0.xsd">
...
  <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>

这里我们配置所有的snapshot版本构件部署到Nexus的Snapshots仓库中, 所有的release构件部署到Nexus的Releases仓库中。由于部署需要登陆,因为我们在settings.xml中配置对应Repository id的用户名和密码。

然后,在项目目录中执行mvn deploy ,你会看到maven将项目构件部署到Nexus中,浏览Nexus对应的仓库,就可以看到刚才部署的构件。当其他人构建其项目时,Maven就会从Nexus寻找依赖并下载。

时间: 2024-08-26 12:41:37

配置Nexus仓库,部署构件到Nexus仓库的相关文章

maven从nexus下载构件以及maven部署构件到nexus的配置

1.maven从nexus下载构件的配置 1.1.在项目pom中配置远程仓库(方式一) <repositories> <repository> <id>remote</id> <name>my nexus repository</name> <url>http://192.1.1.103:8081/nexus/content/groups /public/</url> </repository> &

Maven部署构件至远程仓库

私服的一大作用就是部署第三方构件,包括组织内的生成的构件以及一些无法从外部仓库获取的构件.无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其它团队成员使用.Maven除了能对项目进行编译.测试.打包之外,还能将项目生成的构件部署到仓库中.我们可以在pom.xml中配置构件的部署地址. distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库.往远程仓库部署构件的时

maven入门基础:使用maven部署构件到nexus(十五)

一. 在setting.xml中设置发布用户的用户名和密码 账号密码:deployment,deployment123 <servers> <!-- 设置私服用户名和密码 --> <server> <id>nexus-release</id> <username>deployment</username> <password>deployment123</password> </server&

Maven之——Nexus仓库与构件

Maven之--Nexus仓库与构件 1.    Nexus的索引与构件搜索 用户可以根据构件名称.GVA来在Nexus中搜索所需构件.但是前提是被搜索的仓库开启索引.比如中央仓库.默认中央仓库是关闭自动下载远程索引的.如下图.开启下载中央仓库远程索引: 可以在ScheduledTasks中观察系统的调度任务.也可以在这里配置系统的调度任务. 2.    配置Maven从Nexus下载构件 Maven私服搭建好之后.需要修改配置文件.使用Nexus私服.具体目标是.所有构件和插件的请求都转向Ne

Maven-005-部署构件至 nexus 私服

nexus 私服仓库中宿主仓库主要用于储存装置内部的或一些无法从公共仓库获取的第三方构件,供项目组的人员使用.日常开发中,可将各版本构件直接部署到 Nexus 中对应策略的宿主仓库中.上篇文章中讲述了如何搭建 nexus 私服,那么如何将项目部署至 nexus 私服,供项目组的其他人员使用呢? 首先,配置 POM 文件的 distributionManagement 节点,实例配置如下所示: <project> ... <distributionManagement> <re

部署Maven与Nexus(私服)

博文大纲:一.Maven简介1)Maven的功能:2)Maven使用场景(从运维人员的角度来看):3)Maven仓库二.部署Maven1)配置jdk环境2)部署Maven三.部署Nexus私服1)Nexus简介2)部署Nexus四.Maven配置nexus私服,将远程仓库设置成本地搭建的Nexus私服1)修改maven的主配置文件2)创建一个maven项目进行测试3)配置认证,将打包好的项目上传到nexus中4)上传到maven-release仓库5)上传第三方maven 一.Maven简介 M

使用Maven部署构件至私服

--------------------siwuxie095 使用 Maven 部署构件至私服 1.部署构件到 Nexus 私服分两种情况: (1)日常开发生成的快照版本构件可以直接部署到 Nexus 私服 的宿主仓库 Snapshots 中 (2)项目最终生成的发布版本构件可以直接部署到 Nexus 私服 的宿主仓库 Releases 中 2.具体配置分如下两步: (1)第一步:在 pom.xml 的 project 标签中添加如下内容 <distributionManagement> &l

用nexus搭建自己的maven私有仓库

用nexus搭建自己的maven私有仓库 刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止.后来查找到了原因: Java 6 Support EOLOracle's support for Java 6 ended in February 2013.  Consequentially as of version 2.6 Nexus now requires a Java 7 JRE to run. 意思就是从2.6.0开始不支持6了,jdk版本要求7以上. 一.用admin用户登

Maven-006-手动部署第三方构件至 nexus 私服

某些 Java 构件因许可证因素,无法公开的部署到公共仓库中:或者,一些小型的开源项目(例如 SourceForge.GitHub 中的一些项目),没有将构件分发到中央仓库中,也没有维护自己的仓库,因而也无法从公共仓库获得. 此时,若需要使此类构件在 nexus 私服中,则需要将构件下载到本地(或者下载源码至本地,经过定制修改后重新打包),通过 Nexus 界面上传到 maven nexus 私服中. Nexus 上传第三方构件,需要选择一个宿主仓库(例如:3rd party),选择 [Arti