maven系列-(六)使用Nexus搭建私服

前面的文章,在说到maven仓库的时候,提到过maven私服的概念,maven私服属于maven远程仓库的一种,是在局域网内搭建的一个私有的仓库服务器。一般情况下,如果是在一个组织内使用maven的话,都会有自己搭建的maven私服。使用maven私服可以降低中央仓库的负荷,节省外网带宽,加速maven构建,自己部署构件等,从而高效的使用maven。而搭建私服用到的工具,一般就是Nexus了。

什么是Nexus?

Nexus是maven仓库管理工具,可以通过Nexus搭建私服,管理构件。

Nexus安装:

Nexus是典型的Java Web应用,有两种安装包,一种是包含Jetty容器的Bundle包,一种是不包含Web容器的war包。

Nexus专业版是需要付费的,我们下载开源版Nexus OSS:
https://www.sonatype.com/download-oss-sonatype
在这个地址,下载自己需要的操作系统的版本。下载之后解压。

我下载了Nexus的bundle包,然后去目录下解压,得到两个子目录。
在这里插入图片描述

其中,nexus-3.14.0-04主要包含Nexus运行所需的启动脚本、依赖jar包等文件。sonatype-work主要包含Nexus生成的配置文件、日志文件、仓库文件等。

运行Nexus:

在命令行下,进入nexus-3.14.0-04的bin目录下,有个nexus文件,运行./nexus start,就可以启动nexus了。
启动之后,浏览器输入http://localhost:8081,可以看到Nexus的主界面:
在这里插入图片描述

Nexus提供了默认的管理员用户,界面的右上角,有个Sign in的按钮,可以登录,用户名是admin,密码是admin123。

Nexus仓库:

Nexus包含了很多类型的仓库,也提供了很多内置的仓库,点击左侧导航栏中的Browse,一开始看到的这些仓库都是内置的:
在这里插入图片描述

Nexus的仓库类型,总共有四种:hosted(宿主)、proxy(代理)、group(仓库组)、virtual(虚拟)。

Nexus的内置仓库:
maven-central:仓库类型是proxy,代理maven中央仓库。该仓库的策略是RELEASE,只会下载和缓存中央仓库中的发布版本的构件。
maven-releases:仓库类型是hosted,策略是RELEASE,用来部署组织内部的发布版本构件。
maven-snapshots:仓库类型是hosted,策略是SNAPSHOT,用来部署组织内部的快照版本构件。

仓库组,一般是用来聚合多个仓库的,这样在引入仓库的时候,只需要写一个仓库组的地址就可以了,这个仓库组再去选择某个实际的仓库去下载依赖。Nexus内置仓库的maven-public就是这样的一个仓库,我们可以查看这个仓库的详细信息:
在这里插入图片描述
在这里插入图片描述

点击maven-public进去之后,就可以看到这个仓库组的设置,这个仓库组聚合了maven-releases、maven-snapshots、maven-central三个仓库。仓库组中仓库的顺序,就是遍历的顺序,所以,最好把常用的仓库放在前面。

使用Nexus:

我们已经搭建了自己的私服,接下来,就要把仓库的地址,配置成自己搭建的这个私服了,点击maven-public可以看到仓库的地址:
在这里插入图片描述

在我们项目的pom文件中,配置这个地址就可以了:

<repositories>
    <repository>
        <id>my-nexus</id>
        <url>http://localhost:8081/repository/maven-public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>my-nexus</id>
        <url>http://localhost:8081/repository/maven-public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

上面的配置,就是可以让项目从自己的maven私服中下载依赖的构件。
接下来再配置上传的,我们把自己发布的构建,发布版本的上传到maven-releases仓库,把快照版本的上传到maven-snapshots仓库。
在pom中添加如下配置:

<!-- 构件上传 -->
<distributionManagement>
    <repository>
        <id>my_releases</id>
        <url>http://localhost:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>my_snapshots</id>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

因为Nexus的仓库对匿名用户是只读的,所以还需要修改自己本地的setting.xml文件,添加如下配置:

 <settings>
 ...
    <server>
      <id>my_releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>my_snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
...
 </settings>    

修改完之后,在项目路径下运行mvn deploy命令,可以看到如下信息:

mvn deploy
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] maven-test                                                         [pom]
[INFO] maven-test-controller                                              [jar]
[INFO] maven-test-service                                                 [jar]
[INFO] maven-test-dao                                                     [jar]
[INFO] 
[INFO] ---------------------< com.baidu.test:maven-test >----------------------
[INFO] Building maven-test 1.0-SNAPSHOT                                   [1/4]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-test ---
[INFO] Installing /Users/zhayang/IdeaProjects/maven-test/pom.xml to /Users/zhayang/.m2/repository/com/baidu/test/maven-test/1.0-SNAPSHOT/maven-test-1.0-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ maven-test ---
Downloading from my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/1.0-SNAPSHOT/maven-metadata.xml
Uploading to my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/1.0-SNAPSHOT/maven-test-1.0-20181018.032416-1.pom
Uploaded to my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/1.0-SNAPSHOT/maven-test-1.0-20181018.032416-1.pom (3.3 kB at 15 kB/s)
Downloading from my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/maven-metadata.xml
Uploading to my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/1.0-SNAPSHOT/maven-metadata.xml
Uploaded to my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/1.0-SNAPSHOT/maven-metadata.xml (597 B at 2.0 kB/s)
Uploading to my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/maven-metadata.xml
Uploaded to my_snapshots: http://localhost:8081/repository/maven-snapshots/com/baidu/test/maven-test/maven-metadata.xml (282 B at 4.1 kB/s)
......

可以从日志中看到,构建已经上传到maven-snapshots仓库,此时再进入这个仓库,就可以看到内容了。

在这里插入图片描述

在这里插入图片描述

这里操作的是通过maven自动上传构件到Nexus,除此之外,还可以在Nexus界面中,选择Upload,手动上传构件。

到这里,Nexus就介绍完了,主要介绍了如何通过Nexus搭建私服,并且通过这个私服下载和上传构件。

参考资料:
1.《maven实战》 许晓斌 著

猜你喜欢

转载自blog.csdn.net/chayangdz/article/details/83104898
今日推荐