在以前的一篇文章《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 安装成 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/,启动后页面如下:
在右上角有个 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 私服中。
4.6.2 通过界面手动上传构件至Nexus
这里以 pure 框架作为例子,演示如何手动上传构件。
按照图中依次点击。
填写信息如下。
开始上传至私服中。
刷新查看上传是否成功。
在 Maven 项目中,使用上传的第三方构件。
按图中操作,复制构件信息。
复制信息到项目的 pom.xml 中即可。
到此,Maven 私服的搭建和基本的使用已介绍完毕,动手试试吧~