在以前的一篇文章《​​Maven 的初识、安装和配置​​》中,简单介绍了 Maven 和 Maven 在 IDE 环境中的配置。时隔一年,抽空把 Maven 私服的搭建和上传也简单写写,希望对需要的码友们有帮助。

4 使用Nexus搭建Maven私服

4.1 环境配置

虚拟机Win7(x86)作为模拟服务器,IP为192.168.2.155。

主机Win7(x64)作为客户端,IP为192.168.2.158。

4.2 私服简介

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

4.3 私服的作用

简单了解建立Maven私服的作用主要有:降低中央仓库的负荷,节省外网宽带,加速Maven构建,自己部署构件等等。

4.4 适用情景

为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。

4.5 安装测试

首先确定我们的环境安装好jdk环境。

下载最新版本的nexus下载地址:​​http://www.sonatype.org/nexus/go​​,这里下载 nexus-2.12.1-01-bundle.zip,解压到 D 盘。

主要包括两个目录:nexus-2.12.1-01 和 sonatype-work。前者包含了 Nexus 运行所需要的文件,如启动脚本、依赖 jar 包等;后者主要包含 Nexus 生成的配置文件、日志文件、仓库文件等。

打开目录 D:\nexus-2.12.1-01-bundle\nexus-2.12.1-01\bin\jsw\,这个目录下面你会发现有很多系统版本的 nexus 环境,由于目前测试服务器是 win7 (32)的系统,所以选择进入 windows-x86-32 这个目录。

主要功能如下:

使用 Nexus 搭建 Maven 私服_私服

一般建议将 nexus 安装成 windows 服务,所以双击 install-nexus.bat,安装 nexus 到 windows 服务,双击 start-nexus.bat 启动服务。

如果发现 nexus 无法启动,并提示信息:​wrapper | The nexus service was launched, but failed to start​,可能是 jdk 环境变量设置有问题,再检查确认。

如果启动成功,没提示错误,则访问 ​​http://localhost:8081/nexus/​​,启动后页面如下:

使用 Nexus 搭建 Maven 私服_图文教程_02

在右上角有个 Log in 的超链接,点击登录,默认的用户名是 ​admin​ 密码是 ​admin123​。

如果在客户端服务器中访问,打开浏览器,输入 ​​http://192.168.2.155:8081/nexus/​​,即可进行构件的管理等操作。

到此,完成了 nexus 私服的搭建,项目组开发人员开发时,也可以在项目的 pom.xml 文件中,添加如下信息即可获取私服的 jar。

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.bonc.wo</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>test</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!-- 仓库地址 -->
<repositories>
<repository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://192.168.2.155:8081/nexus/content/groups/public/</url>
</repository>
</repositories>

<!-- 插件地址 -->
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://192.168.2.155:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>

<!-- mysql驱动包第三方构件 -->
<dependencies>
<dependency>
<groupId>jdbc-driver</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
<classifier>bin</classifier>
</dependency>
</dependencies>
</project>

添加其他的构件时,会先在 nexus 私服下载好,然后才会下载到本地。如果发现私服已经存在某一 jar 包,则会直接从私服下载,如果没有则去网络上下载。

4.6 部署构件到私服

如果有些构件无法从公共仓库中获得,比如一些第三方构件,或者公司内部保密的一些构件,都可以上传至私服中的宿主仓库,让公司中的每个项目都可以免费下载使用。

如何上传呢?有两种方式:用户可以配置 Maven 自动部署构件至 Nexus 的宿主仓库,也可以通过界面手动上传构件。

4.6.1 配置 Maven 自动部署构件至 Nexus

这里以在 MyEclipse 中创建的 Maven 项目 test 为例来说明。

在项目的 pom.xml 文件中,加入下面的配置:

<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Releases Repository</name>
<url>http://192.168.2.155:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshots Repository</name>
<url>http://192.168.2.155:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>

在 setting.xml 中,需要配置认证信息,如下:

<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>

其中,用户名和密码为 nexus 私服的管理员及其密码。

配置完毕后,对项目运用命令:mvn deploy 则即可发布快照版或正式版到 nexus 私服中。

使用 Nexus 搭建 Maven 私服_Maven_03

使用 Nexus 搭建 Maven 私服_安装_04

4.6.2 通过界面手动上传构件至Nexus

这里以 pure 框架作为例子,演示如何手动上传构件。

按照图中依次点击。

使用 Nexus 搭建 Maven 私服_私服_05

填写信息如下。

使用 Nexus 搭建 Maven 私服_私服_06

开始上传至私服中。

使用 Nexus 搭建 Maven 私服_图文教程_07

刷新查看上传是否成功。

使用 Nexus 搭建 Maven 私服_安装_08

在 Maven 项目中,使用上传的第三方构件。

按图中操作,复制构件信息。

使用 Nexus 搭建 Maven 私服_使用_09

复制信息到项目的 pom.xml 中即可。

到此,Maven 私服的搭建和基本的使用已介绍完毕,动手试试吧~